C# căn bản

Bài 1: Giới thiệu về ngôn ngữ C#- Hello C#

Bài 2: Các kiểu dữ liệu trong C#. Biến, hằng và cách sử dụng

Bài 3: Kiểu Enumerator

Bài 4: Kiểu mảng và kiểu chuỗi kí tự

Bài 5: Các cấu trúc lệnh trong C#

Bài 6: Toán tử

Bài 7: Xử lý ngoại lệ: Các lệnh throw ,try- catch, finally.

pdf73 trang | Chuyên mục: Visual C# | Chia sẻ: dkS00TYs | Lượt xem: 2683 | Lượt tải: 2download
Tóm tắt nội dung C# căn bản, để xem tài liệu hoàn chỉnh bạn click vào nút "TẢI VỀ" ở trên
”, loc); 
} 
static void Main() 
{ 
Location loc1 = new Location( 200, 300); 
Console.WriteLine(“Loc1 location: {0}”, loc1); 
Tester t = new Tester(); 
t.myFunc( loc1 ); 
Console.WriteLine(“Loc1 location: {0}”, loc1); 
} 
} 
Những điểm khác nhau giữa Class và Struct 
Struct không hỗ trợ thừa kế. Struct được thừa kế từ lớp object nhưng không thể thừa kế từ các lớp 
khác hay các struct khác. Struct luôn được ngầm định là sealed, nghĩa là không có lớp hay struct nào 
có thể kế thừa nó. Tuy nhiên struct có thể thực thi nhiều giao diện như class. 
Struct không có constructor và destructor mặc định. 
Không cho phép khởi tạo các trường thể hiện ( instance fields) trong struct vì thế đoạn mã sau sẽ 
không hợp lệ: 
private int xVal = 20; 
private int yVal = 50; 
Sưu tầm và edit bởi Oki@kimur@ 
 66 
Tạo struct: 
Chúng ta tạo một thể hiện của struct bằng cách sử dụng từ khóa new trong câu lệnh 
gán, như khi chúng ta tạo một đối tượng của lớp. Như trong ví dụ, lớp Tester tạo một thể 
hiện của Location như sau: 
Location loc1 = new Location( 200, 300); 
Ở đây một thể hiện mới tên là loc1 và nó được truyền hai giá trị là 200 và 300. 
Struct là một kiểu giá trị và được lưu trữ trên stack. Chúng ta cũng có thể truyền struct vào hàm như 
các tham số khác. 
Bài 17: Namespace trong C# 
Ta có thể hiểu Namespace là một gói những thực thể có thuộc tính và hành vi độc lập với bên ngoài. 
Những ưu điểm của namespace được liệt kê như sau: 
 Tránh được sự trùng lặp tên giữa các class. 
 Cho phép tổ chức mã nguồn một cách có khoa học và hợp lý. 
Khai báo một Namespace 
namespace NamespaceName 
{ 
 // nơi chứa đựng tất cả các class 
} 
Trong đó, 
Namespace: là từ khóa khai báo một NameSpace 
NamespaceName: là tên của một Namespace 
Ví dụ 
namespace CSharpProgram 
{ 
 class Basic 
Sưu tầm và edit bởi Oki@kimur@ 
 67 
 { 
 } 
 class Advance 
 { 
 } 
} 
Bài 18: Luyện tập (Phần ngôn ngữ C#) 
Hãy nhớ lại bài học đầu tiên, bạn được học cách mở một ứng dụng console trong Visual Studio.net 
và gõ những dòng code đầu tiên “Hello C#”. Giờ đây bạn đã hoàn toàn làm chủ được ngôn ngữ này 
rồi. Chúng ta hãy cùng điểm lại những kiến thức trọng tâm của toàn khóa học qua bài ôn tập này. 
I. Nhắc lại những đặc điểm của ngôn ngữ C# 
C# là một sản phẩm của microsoft, là một ngôn ngữ hướng đối tượng khá thân thiện và mềm dẻo 
mà bạn có thể sử dụng để xây dựng các ứng dụng destop hay web. 
C# có sẵn các thư viện với các hàm hỗ trợ mạnh cho việc lập trình. 
Bạn cần phải nhớ một số nguyên tắc sau: 
 C# là ngôn ngữ phân biệt hoa thường 
 Quy tắc đặt tên trong C# 
 Quy tắc viết chú thích. 
 Cách khai báo các thư viện dùng trong chương trình 
II. Các kiểu dữ liệu trong c# 
C# có 2 loại dữ liệu là dữ liệu kiểu value và dữ liệu kiể reference. Kiểu value hầu hết là những kiểu 
có sẵn còn kiểu reference hầu hết là những kiểu do người dùng định nghĩa. Bảng dưới đây tổng hợp 
các kiểu dữ liệu được xây dựng sẵn: 
Kiểu Khai báo 
object object o = null; 
string string s = "hello"; 
sbyte sbyte val = 12; 
short short val = 12; 
int int val = 12; 
long 
long val1 = 12; 
long val2 = 34L; 
byte byte val1 = 12; 
Sưu tầm và edit bởi Oki@kimur@ 
 68 
ushort ushort val1 = 12; 
uint uint val1 = 12; 
uint val2 = 34U; 
ulong 
ulong val1 = 12; 
ulong val2 = 34U; 
ulong val3 = 56L; 
ulong val4 = 78UL; 
float float val = 1.23F; 
double double val1 = 1.23; 
double val2 = 4.56D; 
bool bool val1 = true; 
bool val2 = false; 
char char val = 'h'; 
decimal decimal val = 1.23M; 
III. Các loại lệnh của C# 
Bảng sau sẽ tổng hợp lại toàn bộ các loại lệnh của C# 
Câu lệnh Ví dụ minh họa 
Câu lệnh đơn và khối 
lệnh 
static void Main() { 
 F(); 
 G(); 
 { 
 H(); 
 I(); 
 } 
} 
Khai báo nhãn và lệnh 
goto 
static void Main(string[] args) { 
 if (args.Length == 0) 
 goto done; 
 Console.WriteLine(args.Length); 
done: 
 Console.WriteLine("Done"); 
} 
Khai báo các hằng khu 
vực ( 
Local constan) 
static void Main() { 
 const float pi = 3.14f; 
 const int r = 123; 
 Console.WriteLine(pi * r * r); 
} 
khai báo các biến khu 
vực 
(local variable) 
static void Main() { 
 int a; 
 int b = 2, c = 3; 
 a = 1; 
Sưu tầm và edit bởi Oki@kimur@ 
 69 
 Console.WriteLine(a + b + c); 
} 
Các biểu thức lệnh 
(Expression Statement) 
static int F(int a, int b) { 
 return a + b; 
} 
static void Main() { 
 F(1, 2); // Expression statement 
} 
Lệnh If static void Main(string[] args) { 
 if (args.Length == 0) 
 Console.WriteLine("No args"); 
 else 
 Console.WriteLine("Args"); 
} 
Lệnh Switch static void Main(string[] args) { 
 switch (args.Length) { 
 case 0: 
 Console.WriteLine("No args"); 
 break; 
 case 1: 
 Console.WriteLine("One arg "); 
 break; 
 default: 
 int n = args.Length; 
 Console.WriteLine("{0} args", n); 
 break; 
 } 
} 
Lệnh While static void Main(string[] args) { 
 int i = 0; 
 while (i < args.Length) { 
 Console.WriteLine(args[i]); 
 i++; 
 } 
} 
Lệnh Do…While static void Main() { 
 string s; 
 do { s = Console.ReadLine(); } 
 while (s != "Exit"); 
} 
Lệnh For static void Main(string[] args) { 
 for (int i = 0; i < args.length; i++) 
 Console.WriteLine(args[i]); 
} 
Lệnh foreach static void Main(string[] args) { 
 foreach (string s in args) 
Sưu tầm và edit bởi Oki@kimur@ 
 70 
 Console.WriteLine(s); 
} 
Lệnh break static void Main(string[] args) { 
 int i = 0; 
 while (true) { 
 if (i == args.Length) 
 break; 
 Console.WriteLine(args[i++]); 
 } 
} 
Lệnh continue static void Main(string[] args) { 
 int i = 0; 
 while (true) { 
 Console.WriteLine(args[i++]); 
 if (i < args.Length) 
 continue; 
 break; 
 } 
} 
Lệnh return static int F(int a, int b) { 
 return a + b; 
} 
static void Main() { 
 Console.WriteLine(F(1, 2)); 
 return; 
} 
Lệnh Throw và try… 
catch 
static int F(int a, int b) { 
 if (b == 0) 
 throw new Exception("Divide by zero"); 
 return a / b; 
} 
static void Main() { 
 try { 
 Console.WriteLine(F(5, 0)); 
 } 
 catch(Exception e) { 
 Console.WriteLine("Error"); 
 } 
} 
Bài học sau sẽ tổng hợp các kiến thức về hướng đối tượng trong C#. 
Bài 19: Luyện tập- phần hướng đối tượng trong C# 
Sưu tầm và edit bởi Oki@kimur@ 
 71 
1. Lớp (Class ) và đối tượng (Object) 
Khái niệm về lớp và đối tượng 
Lớp là một khái niệm mô tả cho những thực thể có chung tính chất và hành vi có thể nói lớp là 
một khuôn mẫu cho các đối tượng. Còn đối tượng là những đại diện cho lớp, mọi đối tượng đều có 
chung tính chất và hành vi mà lớp định nghĩa. 
Các thành phần của lớp 
Các thành phần của lớp gồm: Fields, properties và Methods và các thành phần này được phân làm 
2 loại là static và instance. 
Trong đó : 
Fields là các phần tử dùng để thể hiện các biến trong lớp. 
Properties là phần tử dùng để truy cập đến đặc điểm của một đối tượng hoặc một class. Properties 
được định nghĩa bằng 2 phần, phần thứ nhất giống như định nghĩa Fields, phần thứ 2 có thêm 2 
phần tử get và set. 
Methods hay phương thức chính là các “hành vi” được định nghĩa trong class. Nó dùng để thực 
hiện một công việc nào đó của một đối tượng hay một class. Khi học về method bạn cần đặc biệt 
lưu ý đến các vấn đề về Methods overloading, Constructor, Destructor và cách truyền tham số cho 
method. 
Lớp Abstract class và Sealed class 
Là 2 lớp đặc biệt của C# trong đó: 
Abstract class là lớp chứa phương thức Abstract hay phương thức ảo- tức là các phương thức chỉ 
được khai báo chứ không thực thi hành động nào. Abstract class chỉ được dùng làm lớp cha cho 
các lớp kế thừa. 
Sealed class là lớp không bao giờ được kế thừa. Nếu bạn khai báo một lớp dẫn xuất từ một lớp 
Sealed class thì chương trình sẽ báo lỗi. 
2. Struct. 
Khái niệm về Struct 
Struct là một kiểu dữ liệu đơn giản do người dùng định nghĩa, có kích thước nhỏ và có thể được 
dùng thay cho lớp. Struct cũng chứa những thành phần tương tự như lớp. 
Cách khai báo và sử dụng 
Sưu tầm và edit bởi Oki@kimur@ 
 72 
[thuộc tính] [bổ sung truy cập] struct [: danh sách giao diện] 
{ 
[thành viên của cấu trúc] 
} 
Phân biệt Struct với Class 
Struct là kiểu dữ liệu giá trị còn class là kiểu tham chiếu. Struct luôn được mặc định là sealed 
không hỗ trợ inheritance, constructor và destructor. Nhưng struct cũng có thể thực thi nhiều giao 
diện như class. 
3. Inheritance 
Khái niệm về Inheritance 
Inheritance là việc một class có thể kế thừa (sử dụng lại) các thuộc tính và các phương thức được 
định nghĩa từ một class khác. Khi đó class kế thừa được gọi là lớp dẫn xuất hay lớp con còn lớp 
được kế thừa là lớp cơ sở hay lớp cha. 
Khai báo và sử dụng Inhertance. 
Khai báo lớp B kế thừa lớp A: 
class A {} 
class B: A {} 
4. Overriding method và Polimorphysm 
Phân biệt giữa Overriding method và Polimorphysm 
Overrding methed là một hàm cùng tên cùng kiểu được khai báo trong lớp con và sẽ override 
hàm trong lớp cha. Polimorphysm không chỉ override hàm trong lớp cha mà nó còn override thông 
minh. Sự khác biệt quan trọng giữa Overriding method và Polimorphysm là trong Polimorphysm 
việc quyết định gọi hàm được thực hiện khi chương trình chạy. 
5. Interface 
Giao diện là ràng buộc, giao ước đảm bảo cho các lớp hay các cấu trúc sẽ thực hiện một điều gì 
đó. Khi một lớp thực thi một giao diện, thì lớp này báo cho các thành phần client biết rằng lớp này 
có hỗ trợ các phương thức, thuộc tính, sự kiện và các chỉ mục khai báo trong giao diện. 
Khai báo một giao diện: 
Sưu tầm và edit bởi Oki@kimur@ 
 73 
[thuộc tính] [phạm vi truy cập] interface [: danh sách cơ sở] 
{ 
} 
6. Namespace 
Ta có thể hiểu Namespace là một gói những thực thể có thuộc tính và hành vi độc lập với bên 
ngoài. 
Khai báo một Namespace 
namespace NamespaceName 
{ 
 // nơi chứa đựng tất cả các class 
} 
Trong đó, 
Namespace: là từ khóa khai báo một NameSpace. 
NamespaceName: là tên của một Namespace. 
Hết 
Chúc các bạn học tốt ^^! 

File đính kèm:

  • pdfC# căn bản.pdf
Tài liệu liên quan