chuong1 ontapcoso
TRANSCRIPT
3/26/2010
CHƯƠNG 1:
ÔN TẬP CÁC LỚP CƠ SỞ
A D M I N T U T H O C L A PT R I N H. C O M
NỘI DUNG 2
Chuỗi và biểu thức chính quy ( regular expression)
Nhóm đối tượng bao gồm: danh sách mảng,collections và
từ điển
Phương thức
Truy xuất
Mục đích
string ToString()
public virtual
Trả về 1 chuỗi đại diện cho đố i
tượng
int GetHashCode()
public virtual
Cho phép những đối tượng cung
cấp riêng những hàm băm cho sử
dụngtập hợp.
bool Equals(object obj)
public virtual
So sánh đối tượng bằng với 1 đối
tượngkhác
ool Equals(object objA,
object objB)
public static
So sánh bằng 2 đối tượng
bool
ReferenceEquals(object
objA, object objB)
public static
So sánh các tham chiếu đối tượng
để xem chúng có chỉ đến cùng đối
tượng
Type GetType()
public
Trả về 1 đối tượng dẫn xuất từ
System.Type mà đưa ra chi tiết
kiểu dữ liệu
object MemberwiseClone()
protected
Tạo một bản sao từ đối tượng
void Finalize()
protected virtual
Hàm hủy ( Destructor)
Phương thức
Mục đích
Compare
So sánh nội dung của 2 chuỗi
CompareOrdinal
Giống compare nhưng không quan tâm đến ngôn ngữ
Format
Định dạng một chuỗi chứa 1 giá t rị khác và chỉ định
cách mỗi g iá trị nên được định dạng.
IndexOf
Vị trí xuất h iện đầu tiên của 1 chuỗi con hoặc kí tự trong
chuỗi
IndexOfAny
Vị trí xuất hiện đầu tiên của bất kì 1 hoặc 1 tập kí tự
trong chuỗi
LastIndexOf
Giống indexof , nhưng tìm lần xuất h iện cuối cùng
specifier
type
format
output
(double 1.2345)
output
(int -12345)
c
currency
{0:c}
£1.23
-£12,345.00
d
decimal
(whole number)
{0:d}
System.FormatException
-12345
e
exponent / scienti fi c
{0:e}
1.234500e+000
-1.234500e+004
f
fixed point
{0: f}
1.23
-12345.00
g
general
{0:g}
1.2345
-12345
n
number
{0:n}
1.23
-12,345.00
r
round trippable
{0:r}
1.23
System.FormatException
x
hexadecimal
{0:x4}
System.FormatException
ffffc fc7
Ký tự
Ý nghĩa
\w
Ký tự word (gồm chữ cái và chữ số, dấu gạch dưới _ ) tươngđương [a-zA-
Z_0-9]
\W
Ký tự không phải ký tự word tươngđương [^a-zA-Z_0-9]
Phương thức
Truy xuất
Mục đích
string ToString()
public virtual
Trả về 1 chuỗi đại diện cho đố i
tượng
int GetHashCode()
public virtual
Cho phép những đối tượng cung
cấp riêng những hàm băm cho sử
dụngtập hợp.
bool Equals(object obj)
public virtual
So sánh đối tượng bằng với 1 đối
tượngkhác
ool Equals(object objA,
object objB)
public static
So sánh bằng 2 đối tượng
bool
ReferenceEquals(object
objA, object objB)
public static
So sánh các tham chiếu đố i tượng
để xem chúng có chỉ đến cùng đối
tượng
Type GetType()
public
Trả về 1 đối tượng dẫn xuất từ
System.Type mà đưa ra chi tiết
kiểu dữ liệu
object MemberwiseClone()
protected
Tạo một bản sao từ đối tượng
void Finalize()
protected virtual
Hàm hủy ( Destructor)
Phương thức
Mục đích
Compare
So sánh nội dung của 2 chuỗi
CompareOrdinal
Giống compare nhưng không quan tâm đến ngôn ngữ
3/26/2010
1.1 System.object
3
1.2 Xử lý chuỗi (System.string) 4
3/26/2010
1.2 Xử lý chuỗi (System.string)
5
Phương thức
LastIndexOfAny
PadLeft
PadRigth
Replace
Split
Substring
ToLower
ToUpper
Trim
Mục đích
Giống indexofAny , nhưng tìm lần xuất hiện cuối cùng
Canh phải chuỗi điền chuỗi bằng cách thêm 1 kí tự được
chỉ định lặp lạ i vào đầu chuỗi Canh trái chuỗi điền chuỗi bằng cách thêm 1 kí tự được
chỉ định lặp lạ i vào cuối chuỗi Thay thế kí tự hay chuỗi con trong chuỗi với 1 kí tự
hoặc chuỗi con khác Chia chuỗi thành 2 mảng chuỗi con, ngắt bởi sự xuất
hiện của một kí tự nào đó Trả về chuỗi con bắt đầu ở một vị trí chỉ định trong
chuỗi. Chuyển chuỗi thành chữ thuờng
Chuyển chuỗi thành chữ in Bỏ khoảng trắng ở đầu và cuối chuỗi
1.2 Xử lý chuỗi (System.string) 6
Ví dụ: Compare string str1 = "ppp";
string str2 = "ccc";
int res = String.Compare(str1, str2);
Console.WriteLine("First result:" +res.ToString());
str2 = "ttt"; res = String.Compare(str1, str2);
Console.WriteLine("Second result:" +res.ToString());
str1 = "ttt"; res = String.Compare(str1, str2);
Console.WriteLine("Third result:"+res.ToString());
Phương thức
Truy xuất
Mục đích
string ToString()
public virtual
Trả về 1 chuỗi đại diện cho đố i
tượng
int GetHashCode()
public virtual
Cho phép những đối tượng cung
cấp riêng những hàm băm cho sử
dụngtập hợp.
bool Equals(object obj)
public virtual
So sánh đối tượng bằng với 1 đối
tượngkhác
ool Equals(object objA,
object objB)
public static
So sánh bằng 2 đối tượng
bool
ReferenceEquals(object
objA, object objB)
public static
So sánh các tham chiếu đố i tượng
để xem chúng có chỉ đến cùng đối
tượng
Type GetType()
public
Trả về 1 đối tượng dẫn xuất từ
System.Type mà đưa ra chi tiết
kiểu dữ liệu
object MemberwiseClone()
protected
Tạo một bản sao từ đối tượng
void Finalize()
protected virtual
Hàm hủy ( Destructor)
Phương thức
Mục đích
Compare
So sánh nội dung của 2 chuỗi
CompareOrdinal
Giống compare nhưng không quan tâm đến ngôn ngữ
Format
Định dạng một chuỗi chứa 1 giá t rị khác và chỉ định
cách mỗi g iá trị nên được định dạng.
IndexOf
Vị trí xuất h iện đầu tiên của 1 chuỗi con hoặc kí tự trong
chuỗi
IndexOfAny
Vị trí xuất hiện đầu tiên của bất kì 1 hoặc 1 tập kí tự
trong chuỗi
LastIndexOf
Giống indexof , nhưng tìm lần xuất h iện cuối cùng
specifier
type
format
output
(double 1.2345)
output
(int -12345)
c
currency
{0:c}
£1.23
-£12,345.00
d
decimal
(whole number)
{0:d}
System.FormatException
-12345
e
exponent / scienti fi c
{0:e}
1.234500e+000
-1.234500e+004
f
fixed point
{0: f}
1.23
-12345.00
g
general
{0:g}
1.2345
-12345
n
number
{0:n}
1.23
-12,345.00
r
round trippable
{0:r}
1.23
System.FormatException
x
hexadecimal
{0:x4}
System.FormatException
ffffc fc7
3/26/2010
1.2 Xử lý chuỗi (System.string) 7
Ví dụ: Format
1.2 Xử lý chuỗi (System.string)
8
double d = 1.2456d;
string str = String.Format("{0:c}", d);
Console.WriteLine(str); str = String.Format("{0:f}", d);
Console.WriteLine(str);
string chuoi01 = "ppp";
object objClone = chuoi01.Clone();
Console.WriteLine("Clone :"+objClone.ToString());
string str1 = "ppp";
string str2 = "ccc";
string str3 = "kkk"; string[] allStr = new String[]{str1, str2, str3};
string strRes = String.Join(", ", allStr);
Console.WriteLine("Join Results: "+ strRes);
3/26/2010
1.2 Xử lý chuỗi (System.string)
9 string str = "forty-two";
char pad = '.';
Console.WriteLine(str.PadLeft(15, pad));
Console.WriteLine(str.PadLeft(2, pad));
Console.WriteLine(str.PadRight(15, pad));
Console.WriteLine(str.PadRight(2, pad));
string str = "forty-two";
string[] arr = str.Split('-');
foreach (string s in arr) Console.WriteLine(s);
string aStr = "adgas";
string bStr = "ABNMDWER";
string strRes = aStr.ToUpper();
Console.WriteLine("Uppercase:"+ strRes.ToString());
strRes = bStr.ToLower();
Console.WriteLine("Lowercase:"+ strRes.ToString());
strRes = aStr.Replace('a', 'b');
Console.WriteLine("Replaced string:" + strRes.ToString());
1.3 Biểu thức chính quy ( Regular Expression) 10
Ngôn ngữ biểu thức chính quy là ngôn ngữ được thiết kế đặc biệt cho việc xử lí chuỗi. Có 2 đặc tính :
1 tập mã escape cho việc xác định kiểu của các kí tự . Ví dụ việc dùng kí tự * để trình bày chuỗi con bất kì trong biểu thức DOS , biểu thức chính quy dùng nhiều chuỗi như thế để trình bày các mục như là 'bất kì 1 kí tự' ,'1 từ ngắt ','1 kí tự tuỳ chọn',...
1 hệ thống cho việc nhóm những phần chuỗi con, và trả về kết quả trong suốt thao tác tìm.
Dùng biểu thức chính quy có thể thao tác ở cấp cao và phức tạp trên chuỗi:
Xác định tất cả các từ lặp lại trong chuỗi , chuyển "The computer booksbooks" "The computerbooks"
Chuyển tất cả các từ theo title case, như là chuyển "this is a Title""ThisIsA Title".
Chuyển những từ dài hơn 3 kí tự thành title case , ví dụ chuyển "thi s is a Title“ "This is a Title”
Bảo đảm các câu được viết hoa
Phân cách những phần tử của URL
3/26/2010
1.3 Biểu thức chính quy ( Regular Expression) 11
Ví dụ: Tìm tất cả các vị trí xuất hiện của một chuỗi trong chuỗi khác
string Text = "Xin chao cac ban. Chao";
string Pattern = "ao"; MatchCollection Matches = Regex.Matches(Text, Pattern,
RegexOptions.IgnoreCase); foreach (Match NextMatch in Matches)
{ Console.WriteLine(NextMatch.Index);
} //Xuất ra màn hình: 6 20
Sử dụng Regex.Matches(Text, Pattern,
RegexOptions.IgnoreCase|RegexOptions.ExplicitCapture);
Text là chuỗi
Pattern là chuỗi đưa vào tìm kiếm trong Text
RegexOptions.IgnoreCase: không phân biệt hoa
thường
1.3 Biểu thức chính quy ( Regular Expression) 12
Ký tự Ý nghĩa
^ Bắt đầu của chuỗi nhập
$ Kết thúc của chuỗi nhập
. Bất kì kí tự nào ngoại trừ kí tự
xuống dòng(\n) * Kí tự trước có thể được lặp lạ i 0
hoặc nhiều lần + Kí tự trước có thể được lặp lạ i 1
hoặc nhiều lần ? Kí tự trước có thể được lặp lạ i 0
hoặc 1 lần \s Bất kì kí tự khoảng trắng
Ví dụ Một số thể hiện
^B B, nhưng chỉ nếu kí tự
đầu tiên trong chuỗi X$ X, nhưng chỉ nếu kí tự
cuối cùng trong chuỗi .ation isation, izat ion
ra*t rt, rat, raat, raaat, and so
on ra+t rat, raat , raaat and so on,
(but not rt) ra?t rt and rat only
\sa [space]a, \ta, \na (\t and
\n có ý nghĩa giống như
trong C#)
Phương thức
Truy xuất
Mục đích
string ToString()
public virtual
Trả về 1 chuỗi đại diện cho đố i
tượng
int GetHashCode()
public virtual
Cho phép những đối tượng cung
cấp riêng những hàm băm cho sử
dụngtập hợp.
bool Equals(object obj)
public virtual
So sánh đối tượng bằng với 1 đối
tượngkhác
ool Equals(object objA,
object objB)
public static
So sánh bằng 2 đối tượng
bool
ReferenceEquals(object
objA, object objB)
public static
So sánh các tham chiếu đố i tượng
để xem chúng có chỉ đến cùng đối
tượng
Type GetType()
public
Trả về 1 đối tượng dẫn xuất từ
System.Type mà đưa ra chi tiết
kiểu dữ liệu
object MemberwiseClone()
protected
Tạo một bản sao từ đối tượng
void Finalize()
protected virtual
Hàm hủy ( Destructor)
Phương thức
Mục đích
Compare
So sánh nội dung của 2 chuỗi
CompareOrdinal
Giống compare nhưng không quan tâm đến ngôn ngữ
Format
Định dạng một chuỗi chứa 1 giá t rị khác và chỉ định
cách mỗi g iá trị nên được định dạng.
IndexOf
Vị trí xuất h iện đầu tiên của 1 chuỗi con hoặc kí tự trong
chuỗi
IndexOfAny
Vị trí xuất hiện đầu tiên của bất kì 1 hoặc 1 tập kí tự
trong chuỗi
LastIndexOf
Giống indexof , nhưng tìm lần xuất h iện cuối cùng
specifier
type
format
output
(double 1.2345)
output
(int -12345)
c
currency
{0:c}
£1.23
-£12,345.00
d
decimal
(whole number)
{0:d}
System.FormatException
-12345
e
exponent / scienti fi c
{0:e}
1.234500e+000
-1.234500e+004
f
fixed point
{0: f}
1.23
-12345.00
g
general
{0:g}
1.2345
-12345
n
number
{0:n}
1.23
-12,345.00
r
round trippable
{0:r}
1.23
System.FormatException
x
hexadecimal
{0:x4}
System.FormatException
ffffc fc7
Ký tự
Ý nghĩa
3/26/2010
1.3 Biểu thức chính quy ( Regular Expression) 13
1.3 Biểu thức chính quy ( Regular Expression) 14
Ký tự Ý nghĩa
| Ký tự ngăn cách so trùngtươngđương với phép or (lưu ý cái này nếu
muốn kết hợp nhiều điều kiện) [abc] Khớp với 1 ký tự nằm trong nhóm là a hay b hay c. [a-z] So trùng với 1 ký tự nằm trong phạm vi a-z, dùng dấu - làm dấu ngăn
cách.
[^abc] Sẽ không so trùng với 1 ký tự nằm trong nhóm, ví dụ không so trùngvới a hay b hay c.
() Xác định 1 group (biểu thức con) xem như nó là một yếu tố đơn lẻ trong
pattern . V í dụ: ((a(b))c) sẽ khớp với b, ab, abc.
{n} n là con số, Khớp đúng với n ký tự đúng trước nó . Ví dụ A{2}: khớp đúng với 2 chữ A.
{n, } Khớp đúng với n ký tự trở lên đứng trước nó ,
A{2,} khớp vói AA, AAA ...
{m,n} Khớp đùng với từ m->n ký tự đứng trước nó, A{2,4} khớp vói AA,AAA,AAAA.
3/26/2010
1.3 Biểu thức chính quy ( Regular Expression) 15
// This is the input string.
string input = "/content/alternate-1.aspx";
// Here we lowercase our input first. input = input.ToLower();
Match match = Regex.Match(input, @"content/([A-
Za-z0-9\-]+)\.aspx$");
Console.WriteLine("\"{0}\" chuoi khop",match);
1.3 Biểu thức chính quy ( Regular Expression) 16
Ví dụ:
Định nghĩa biểu thức chính quy so khớp tiền tệ (USD).
// Define a regular expression for currency values.
Regex rx = new Regex(@"^-?\d+(\.\d{2})?$?.USD"); // Define some test strings.
string[] tests = { "-42", "19.99", "0.001", "100 USD" };
// Check each test string against the regular expression.
foreach (string test in tests) {
if (rx.IsMatch(test))
Console.WriteLine("{0} is a currency value.", test);
else Console.WriteLine("{0} is not a currency value.", test);
}
3/26/2010
1.3 Biểu thức chính quy ( Regular Expression) 17
Viết biểu thức chính quy so khớp địa chỉ web:
VD: http://www.wrox.com Regex rx = new Regex(@"http://(\S+)(?::(\S+))?\b", RegexOptions.IgnoreCase);
string text = "http://www.wrox.com:4355"; Match m = rx.Match(text);
Console.WriteLine(m);
Biểu thức ch ính quy kiểm tra số điện thoại di động
Biểu thức ch ính quy kiểm tra địa ch ỉ mail:yahoo.com và gmail.com
string mail = "[email protected] ";
string pattern = @"([A-Za-z\d_]+)@((yahoo)|(gmail))\.com";
Match match = Regex.Match(mail, pattern);
Console.WriteLine("\"{0}\" chuoi khop", match); string input = "09197792599";
pattern = @"([0-9]{10,11})"; match = Regex.Match(input, pattern);
Console.WriteLine("\"{0}\" chuoi khop", match);
1.3 Biểu thức chính quy ( Regular Expression) 18
VD: Kiểm tra từ trùng nhau
// Define a regular expression for repeated words.
Regex rx = new Regex(@"\b(?<word>\w+)\s+(\k<word>)\b", RegexOptions.Compiled | RegexOptions.IgnoreCase);
// Define a test string. string text = "The the quick brown fox fox jumped over the lazy dog dog";
// Find matches. MatchCollection matches = rx.Matches(text);
// Report the number of matches found. Console.WriteLine("{0} matches found in:\n {1}",
matches.Count, text);
// Report on each match. foreach (Match match in matches)
{ GroupCollection groups = match.Groups;
Console.WriteLine("'{0}' repeated at positions {1} and {2}", groups["word"].Value,
groups[0].Index,
groups[1].Index); }
Phương thức
Truy xuất
Mục đích
string ToString()
public virtual
Trả về 1 chuỗi đại diện cho đối
tượng
int GetHashCode()
public virtual
Cho phép những đối tượng cung
cấp riêng những hàm băm cho sử
dụngtập hợp.
bool Equals(object obj)
public virtual
So sánh đối tượng bằng với 1 đối
tượngkhác
ool Equals(object objA,
object objB)
public static
So sánh bằng 2 đối tượng
bool
ReferenceEquals(object
objA, object objB)
public static
So sánh các tham chiếu đố i tượng
để xem chúng có chỉ đến cùng đối
tượng
Type GetType()
public
Trả về 1 đối tượng dẫn xuất từ
System.Type mà đưa ra chi tiết
kiểu dữ liệu
object MemberwiseClone()
protected
Tạo một bản sao từ đối tượng
void Finalize()
protected virtual
Hàm hủy ( Destructor)
Phương thức
Mục đích
Compare
So sánh nội dung của 2 chuỗi
CompareOrdinal
Giống compare nhưng không quan tâm đến ngôn ngữ
Format
Định dạng một chuỗi chứa 1 giá t rị khác và chỉ định
cách mỗi g iá trị nên được định dạng.
IndexOf
Vị trí xuất h iện đầu tiên của 1 chuỗi con hoặc kí tự trong
chuỗi
IndexOfAny
Vị trí xuất hiện đầu tiên của bất kì 1 hoặc 1 tập kí tự
trong chuỗi
LastIndexOf
Giống indexof , nhưng tìm lần xuất h iện cuối cùng
specifier
type
format
output
(double 1.2345)
output
(int -12345)
c
currency
{0:c}
£1.23
-£12,345.00
d
decimal
(whole number)
{0:d}
System.FormatException
-12345
e
exponent / scienti fi c
{0:e}
1.234500e+000
-1.234500e+004
f
fixed point
{0: f}
1.23
-12345.00
g
general
{0:g}
1.2345
-12345
n
number
{0:n}
1.23
-12,345.00
Phương thức
Truy xuất
Mục đích
string ToString()
public virtual
Trả về 1 chuỗi đại diện cho đối
tượng
int GetHashCode()
public virtual
Cho phép những đối tượng cung
cấp riêng những hàm băm cho sử
dụngtập hợp.
bool Equals(object obj)
public virtual
So sánh đối tượng bằng với 1 đối
tượngkhác
ool Equals(object objA,
object objB)
public static
So sánh bằng 2 đối tượng
bool
ReferenceEquals(object
objA, object objB)
public static
So sánh các tham chiếu đố i tượng
để xem chúng có chỉ đến cùng đối
tượng
Type GetType()
public
Trả về 1 đối tượng dẫn xuất từ
System.Type mà đưa ra chi tiết
kiểu dữ liệu
object MemberwiseClone()
protected
Tạo một bản sao từ đối tượng
void Finalize()
protected virtual
Hàm hủy ( Destructor)
Phương thức
Mục đích
Compare
So sánh nội dung của 2 chuỗi
3/26/2010
1.4 Nhóm các đối tượng 19
1.4.1 Array lists
System.Collection.Arraylist
1.4 Nhóm các đối tượng 20
1.4.1 Array lists: System.Collection.Arraylist
Phương thức
Truy xuất
Mục đích
string ToString()
public virtual
Trả về 1 chuỗi đại diện cho đối
tượng
int GetHashCode()
public virtual
Cho phép những đối tượng cung
cấp riêng những hàm băm cho sử
dụngtập hợp.
bool Equals(object obj)
public virtual
So sánh đối tượng bằng với 1 đối
tượngkhác
ool Equals(object objA,
object objB)
public static
So sánh bằng 2 đối tượng
bool
ReferenceEquals(object
objA, object objB)
public static
So sánh các tham chiếu đố i tượng
để xem chúng có chỉ đến cùng đối
tượng
Type GetType()
public
Trả về 1 đối tượng dẫn xuất từ
System.Type mà đưa ra chi tiết
kiểu dữ liệu
object MemberwiseClone()
protected
Tạo một bản sao từ đối tượng
void Finalize()
protected virtual
Hàm hủy ( Destructor)
Phương thức
Mục đích
Compare
So sánh nội dung của 2 chuỗi
CompareOrdinal
Giống compare nhưng không quan tâm đến ngôn ngữ
Format
Định dạng một chuỗi chứa 1 giá t rị khác và chỉ định
cách mỗi g iá trị nên được định dạng.
IndexOf
Vị trí xuất h iện đầu tiên của 1 chuỗi con hoặc kí tự trong
chuỗi
IndexOfAny
Vị trí xuất hiện đầu tiên của bất kì 1 hoặc 1 tập kí tự
trong chuỗi
LastIndexOf
Giống indexof , nhưng tìm lần xuất h iện cuối cùng
specifier
type
format
output
(double 1.2345)
output
(int -12345)
c
currency
{0:c}
£1.23
-£12,345.00
d
decimal
(whole number)
{0:d}
System.FormatException
-12345
e
exponent / scienti fi c
{0:e}
1.234500e+000
-1.234500e+004
f
fixed point
{0: f}
1.23
-12345.00
g
general
{0:g}
1.2345
-12345
n
number
{0:n}
1.23
-12,345.00
r
round trippable
{0:r}
1.23
System.FormatException
x
hexadecimal
{0:x4}
System.FormatException
ffffc fc7
Phương thức
Truy xuất
Mục đích
string ToString()
public virtual
Trả về 1 chuỗi đại diện cho đối
tượng
int GetHashCode()
public virtual
Cho phép những đối tượng cung
cấp riêng những hàm băm cho sử
dụngtập hợp.
bool Equals(object obj)
public virtual
So sánh đối tượng bằng với 1 đối
tượngkhác
ool Equals(object objA,
object objB)
public static
So sánh bằng 2 đối tượng
bool
ReferenceEquals(object
objA, object objB)
public static
So sánh các tham chiếu đố i tượng
để xem chúng có chỉ đến cùng đối
tượng
Type GetType()
public
Trả về 1 đối tượng dẫn xuất từ
System.Type mà đưa ra chi tiết
kiểu dữ liệu
object MemberwiseClone()
protected
Tạo một bản sao từ đối tượng
void Finalize()
protected virtual
Hàm hủy ( Destructor)
Phương thức
Mục đích
Compare
So sánh nội dung của 2 chuỗi
3/26/2010
1.4 Nhóm các đối tượng 21
1.4.1 Array lists: System.Collection.Arraylist
1.4 Nhóm các đối tượng 22
1.4.1 Array lists: System.Collection.Arraylist
3/26/2010
Ví dụ: ArrayList
23
ArrayList list = new ArrayList();
list.Add("fish");
list.Add("amphibian");
list.Add("bird");
list.Add("plant"); Console.WriteLine("Count of List:" + list.Count);//Display: 4
// Get two elements in ArrayList. ArrayList range = list.GetRange(1, 2);
// Display the elements of range
foreach (string value in range) Console.WriteLine(value); // Display: amphibian, bird
list.Reverse();//Reverse elements of list
foreach (string s in list) Console.WriteLine(s);//Display: plant,bird,amphibian, fish
list.Sort();//sort elements of list
foreach (string s in list) Console.WriteLine(s);//Display:amphibian,bird,fish, plant
Ví dụ: ArrayList
24
list.Add("fish");
Console.WriteLine("Index of \"fish\":"+list.IndexOf("fish"));
list.Remove("fish");//Remove "fish" the fist out of list
foreach (string s in list) Console.WriteLine(s);//Display: amphibian,bird,plant,fish
list.Clear();
Console.WriteLine("count of list:" + list.Count);//Display:0
Console.WriteLine("Index of \"fish\":"+list.IndexOf("fish"));
list.Remove("fish");//Remove "fish" the fist out of list
foreach (string s in list) Console.WriteLine(s);//Display: amphibian,bird,plant,fish
string[] array = list.ToArray(typeof(string)) as string[]; //Loop over array.
foreach (string value in array)
Console.WriteLine(value); //Display: amphibian,bird,plant,fish
list.Clear();
Console.WriteLine("count of list:" + list.Count);//Display:0
3/26/2010
1.4 Nhóm các đối tượng 25
1.4.2. Collection
1 đối tượng là 1 collection nếu nó có thể cung cấp 1 tham chiếu đến một đối tượng có liên quan, được biết đến như là enumarator, mà có
thể duyệt qua từng mục trong collection. Đặc biệt, 1 collection phả i thi hành 1 interface:
System.Collections.Ienumerable interface IEnumerable {
IEnumerator GetEnumerator();
}
Mục đích của GetEnumarator() là để trả về đối tượng enumarator. Khi ta
tập hợp những đoạn mã trên đối tượng enumarator được mong đợi để thi
hành 1 interface, System.Collections.IEnumerator.
1.4 Nhóm các đối tượng 26
1.4.2. Collection
Ngoài ra còn có một interface khác , Icollection , được dẫn xuất từ
IEnumerable. IEnumarator có cấu trúc sau:
interface IEnumerator
{ object Current { get; }
bool MoveNext(); void Reset();
} Khi tạo đối tượng (collection) được tạo thì nó chưa trỏ đến phần tử nào trên
collection vì vậy phải gọi MoveNext() để t rỏ đến phần tử đầu tiên.
Lấy phần tử gọi Current
3/26/2010
1.4 Nhóm các đối tượng 27
1.4.2. Collection Ví dụ: với string
string[] MessageSet = new string[3];
MessageSet[0] = "Hello";
MessageSet[1] = "Good bye"; IEnumerator enumerator = MessageSet.GetEnumerator();
string nextMessage; enumerator.MoveNext();
while ((nextMessage = enumerator.Current as string) !=
null) {
Console.WriteLine(nextMessage);
// toNextMessage
enumerator.MoveNext(); }
1.4 Nhóm các đối tượng 28
Tạo Collection cho Tokens
3/26/2010
/ / Inner class implements IEnumerator interface:
public class TokenEnumerator : IEnumerator {
private int position = -1;
private Tokens t; public TokenEnumerator(Tokens t)
{ this . t = t;
} / / Declare the MoveNext method required by IEnumerator:
public boo l MoveNext() {
i f (position < t.elements.Length - 1)
{ position++;
return tru e; }
else
{ return false ;
} } / / Declare the Reset method required by IEnumerator:
public voi d Reset() {
position = -1;
} / / Declare the Current property required by IEnumerator:
public object Current {
get
{ return t.elements[position];
} }
} 29
public class Tokens : IEnumerable
{ public string[] elements;
Tokens(string source, char[] delimiters)
{ // Parse the string into tokens:
elements = source.Split(delimiters); }
// IEnumerable Interface Implementation:
// Declaration of the GetEnumerator() method
// required by IEnumerable public IEnumerator GetEnumerator()
{ return new TokenEnumerator(this);
} }
30
3/26/2010
static void Main()
{ //Testing Tokens by breaking the string into tokens:
Tokens f = new Tokens("This is a well-done program.", new char[] {' ', '-' });
IEnumerator enumerator = f.GetEnumerator();
string s; while (enumerator.MoveNext())
{ s = enumerator.Current as string;
Console.WriteLine(s); }
}
31
1.4 Nhóm các đối tượng 32
Tạo Collection cho vector
3/26/2010
public class Vector
{ float a;
float b;
float c; public Vector()
{ a = 0 ;
b = 0 ;
c = 0; }
public Vector( int a, int b, int c)
{ this . a = a;
this . b = b;
this . c = a; }
public override string ToString()
{ return "(" +a+ "," + b +" , " +c+ ")" ;
} } public class Vectors : IEnumerable
{ public Vector[] elements;
public int num; public Vectors()
{ elements = new Vector[3];
elements[0] = new Vector(1,2,3);
elements[1] = new Vector(2,2,2);
elements[2] = new Vector(3,3,3);
num = 3; } public IEnumerator GetEnumerator()
{ return new VectorEnumerator(this);
} }
public class VectorEnumerator : IEnumerator
{ private int position = -1;
private Vectors v; public VectorEnumerator( Vectors v)
{ this . v = v;
} public boo l MoveNext()
{ i f (position < v.num - 1)
{ position++;
return tru e; } else return false ;
} public voi d Reset()
{ position = - 1;
} public object Current
{ get { return v.elements[position];}
} static void Main()
{ Vectors v = new Vectors ();
IEnumerator e = v.GetEnumerator();
Vector s; while (e.MoveNext()) {
s = e.Current as Vector ;
Console .WriteLine(s); }
} }
33
1.4 Nhóm các đối tượng 34
Từ điển trong .NET: Sử dụng lớp Hasthable
Hashtable employees = new Hashtable(53);
3/26/2010
class Employee
{ string Id;
string Name;
int Year; public Employee(string id, string name, int year)
{ this.Id = id;
this.Name = name;
this.Year = year; } public override string ToString()
{ return Id + "\t" + Name + "\t" + Year;
} } Hashtable employees = new Hashtable(53);
//Insert Item to dictionary employees.Add("001", new Employee("001", "John", 1982));
employees.Add("002", new Employee("002","Marry", 1984));
//Get item with Key Console.WriteLine(employees["001"] as Employee);
Console.WriteLine(employees["002"] as Employee);
//Count items in dictionary
Console.WriteLine("Count:" + employees.Count);
//remove Item with Key employees.Remove("002"); Employee e=employees["002"] as Employee; if(e!=null)
Console.WriteLine(e);
35
18