chuong1 ontapcoso

35
3/26 /2010 CH ƯƠNG 1: ÔN TP CÁC L P CƠ SADMIN TUTHOCLAPTRINH.COM NI DUNG 2 Chui và biu thc chính quy ( regular expression) Nhóm đối t ượ ng bao gm: danh sách mng,collections và tđin

Upload: tran-van

Post on 15-Apr-2017

92 views

Category:

Education


1 download

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

1

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

2

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());

3

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);

4

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

5

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#)

6

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.

7

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);

}

8

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); }

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ữ

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

10

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

11

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

12

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

13

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

14

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

15

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

16

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);

17

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