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.
”, 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:
C# căn bản.pdf

