GIỚI THIỆU C# (tt)
GV: Phạm Anh Phương
Email:
Chủ đề
Value Type & Reference Type
Boxing & Unboxing
Giới thiệu lớp String
Giới thiệu lớp StringBuilder
Giới thiệu lớp ArrayList
Các dạng Dialog
Stream (Luồng dữ liệu)
Value Type and Reference Type
Value Type:
Là những kiểu dữ liệu cơ sở được map trực tiếp vào
FCL như int32 được map vào System.Int32 hoặc
double được map vào System.double
Giá trị Value Type được lưu trữ trên stack và lớp
được kế thừa từ System.ValueType
Ví dụ:
Int x = 10;
Double y = 30.2;
System.ValueType a = 30;
Reference Type
Biến được cấp phát trên vùng nhớ Heap.
Tất cả các lớp trong thư viện .NET hoặc do người
dùng tạo ra đều là Reference Type.
Dùng toán tử new để cấp phát vùng nhớ.
Ví dụ:
Object a = new ArrayList();
CHocSinh hs = new CHocSinh();
Value Type and Reference Type
Boxing: Ép từ Value Type to Reference Type
Ví dụ:
Int32 x = 10;
object o = x ; // Implicit boxing
Console.WriteLine("The Object o = {0}",o); // prints out 10
//-----------------------------------------------------------
Int32 x = 10;
object o = (object) x; // Explicit Boxing
Console.WriteLine("The object o = {0}",o); // prints out 10
Boxing & Unboxing
Unboxing: Ép từ Reference Type sang Value Type
Ví dụ:
Int32 x = 5; // declaring Int32
Int64 y = 0; // declaring Int64 double
object o = x; // Implicit Boxing
y = (Int64)o; // Explicit boxing to double
Console.WriteLine("y={0}",y);
Boxing & Unboxing
Giới thiệu lớp String
Namespace: System
Dùng để thể hiện dạng chuỗi trong .NET
Bất cứ thao tác nào liên quan đến chuỗi ta sẽ dùng lớp
string để lưu trữ và xử lý.
Ví dụ:
string str = “Hello World”;
Giới thiệu lớp String
Các hàm và property
Tên Ý nghĩa
Length Lấy chiều dài chuỗi
Char <bien>[index] Truy xuất đến kí tự thứ index. Index trong
chuỗi được đánh thứ tự từ 0.
<bien> = <bien> Copy
<bien> = (string)<bien>.Clone() Copy
Bool <bien>.Contains(<chuoi>) Kiểm tra tồn tại chuỗi lấy từ tham số có trong
chuỗi hiện thời.
Int IndexOf(<chuoi>) Trả về chỉ số vị trí chuỗi tìm thấy. Nếu tìm
thấy, trả về vị trí; ngược lại trả về -1
Bool IndexOfAny (char[]) Kiểm tra sự tồn tại của bất kì phần tử trong
mảng kí tự tham số.
Giới thiệu lớp String
Tên Ý nghĩa
Remove(int vitri, int sokitu) Xóa số kí tự từ vị trí xác định trong chuỗi.
Replace(<chuoi>) Thay thế chuỗi
Split Cắt chuỗi dựa trên kí tự cho trước.
SubString() Lấy chuỗi con
(Sinh viên dùng thư viện MSDN để tra cứu thêm các hàm
khác cũng như xem ví dụ mẫu của từng hàm)
Ví dụ 1 : In ra từng kí tự trong chuỗi
string str = “Hello World”;
for(int j = 0; j < str.Length; j ++)
Console.WriteLine (str[j]);
Ví dụ 2 : Copy chuỗi
string str1 = “Hello World”;
string str2 = str1;
string str3 = (string) str1.Clone();
Giới thiệu lớp String
Ví dụ 3: Kiểm tra tồn tại 1 chuỗi con
string str = “Hello World”;
int vitri = str.IndexOf (“World”); // vitri = 6
int vitri = str.IndexOf (“Test”); // vitri = -1 : do không tìm
thấy “Test”
Ví dụ 4: Kiểm tra tồn tại 1 kí tự bất kì
string email = “”;
if (email.IndexOfAny (new char[]{‘@’, ‘.’))
MessageBox.Show (“Có”);
else
MessageBox.Show (“Không”);
Giới thiệu lớp String
Giới thiệu lớp String
Ví dụ 5: Xóa chuỗi kí tự
string str = “abc---def”;
Console.WriteLine("1/ {0}", s)
Console.WriteLine("2/ {0}", s.Remove(3))
Console.WriteLine("3/ {0}", s.Remove(3, 3))
Kết quả:
Index: 012345678
1) abc---def
2) abc
3) abcdef
Giới thiệu lớp String
Ví dụ 6: Tách chuỗi
string str = “,ONE, ,TWO,,”;
string[] sep = new string[]{“,”};
string arr[] = str.Split(sep, StringSplitOptions.None);
string arr1[] = str.Split(sep,
StringSplitOptions.RemoveEmptyEntries);
Kết quả:
arr chứa 3 phần tử <>,<ONE>,<>,<TWO>,<>
arr1 chứa 2 phần tử <ONE>, <TWO>
Giới thiệu lớp String
Ví dụ 7: Thay thế chuỗi
string str = “hello world”;
string res = str.Replace(“world”, “Lan”);
Kết quả:
res có kết quả là “hello Lan”
Ví dụ 8: Lấy chuỗi con
string str = “hello world”;
string res = str.SubString(0, 2);
Kết quả:
res có kết quả là “he”
Giới thiệu lớp String
Ví dụ 7: Gán đường dẫn
string str = “D:\\Thu muc 1\\Thu muc 2”;
Hoặc
string str = @”D:\Thu muc 1\Thu muc 2”;
Ví dụ 8: Khởi tạo định dạng chuỗi
int x = 10, y = 20;
string str = string.Format(“{0} + {1} = {2}”,x,y, x+ y);
//str = “10 + 20 = 30”