intTypePromotion=1
zunia.vn Tuyển sinh 2024 dành cho Gen-Z zunia.vn zunia.vn
ADSENSE

Tìm hiểu Indexer trong C#

Chia sẻ: HA KIEN | Ngày: | Loại File: PDF | Số trang:4

136
lượt xem
15
download
 
  Download Vui lòng tải xuống để xem tài liệu đầy đủ

Đôi lúc, bạn muốn truy xuất một tập hợp nằm trong lòng một class xem bản thân class này như là một mảng. Ví dụ, giả sử bạn tạo một ô liệt kê (listbox)

Chủ đề:
Lưu

Nội dung Text: Tìm hiểu Indexer trong C#

  1. C# Cơ B n WWW.CSHARPVN.COM Tìm hi u Indexer trong C# ðôi lúc, b n mu n truy xu t m t t p h p n m trong lòng m t class xem b n thân class này như là 1 m ng. Ví d , gi s b n t o m t ô li t kê (listbox) mang tên myListBox, ch a m t danh sách nh ng chu i ch ñư c tr trên m t m ng m t chi u, và m t bi n thành viên private mang tên myStrings. Thông thư ng, m t listbox thư ng có m t s phương th c và thu c tính ngoài m ng chu i. Tuy nhiên, s r t ti n l i n u ta có kh năng truy xu t listbox v i m t ch m c, coi listbox như là m t m ng. Ví d , m t thu c tính như th cho phép ta vi t ra nh ng câu l nh sau: Code: 1. string chuoiDau = myListBox[0]; 2. string chuoiCuoi = myListBox[Length-1]; Nói tóm l i, indexer là m t sáng t o c a C# cho phép b n truy xu t nh ng t p h p n m trong lòng m t l p, s d ng cú pháp [] thông d ng c a m ng. Indexer ñư c xem như là m t thu c tính khá ñ c bi t kèm theo nh ng phương th c get() và set(). Khai báo m t indexer cho phép b n t o nh ng class ho c struct ho t ñ ng tương t như “m ng o”. Nh ng th hi n c a l p này có th ñư c truy s d ng tác t truy xu t m ng []. V y ta ph i khai báo Indexer như th nào? B n khai báo m t thu c tính indexer trong lòng m t class, s d ng cú pháp t a như sau: Code: 1. type this[type argument] { get; set; } Ki u d li u type: ñư c tr v xác ñ nh ki u ñ i tư ng mà indexer s tr v . type argument: cho bi t lo i ñ i m c nào s ñư c dùng ñ n ñ ch m c trên t p h p ch a các ñ i tư ng ñích. T khóa this là m t qui chi u v ñ i tư ng theo ñ y indexer s xu t hi n. Ph n thân get() c a indexer cũng gi ng ph n thân c a m t phương th c thông thư ng: Code: 1. get 2. { 3. return myArray[index]; 4. } Ph n thân set() c a indexer cũng gi ng ph n thân c a phương th c thông thư ng Biên t p:salomit Ngu n: Internet
  2. C# Cơ B n WWW.CSHARPVN.COM Code: 1. set 2. { 3. myArray[index] = value; 4. } Sau ñây là ví d v Indexer: ð u tiên, ta khai báo m t class ListBoxTest Code: 1. class ListBoxTest 2. { 3. //thuoc tinh 4. private string[] myStrings; //m ng chu i 5. private int myCtr = 0; //bi n ki m tra s chu i ch 6. //constructor 7. public ListBoxTest(params string[] initialStrings) 8. { 9. //t o 1 m ng 256 chu i 10. myStrings = new string[256]; 11. //kh i gán giá tr cho các chu i ñó 12. foreach (string s in initialStrings) 13. { 14. myStrings[myCtr++] = s; 15. } 16. } 17. //phương th c này ñ thêm m t chu i b t kỳ 18. //vào m ng các chu i c a class ListBoxTest 19. public void Add(string sChuoi) 20. { 21. if (myCtr >= myStrings.Length) 22. { 23. //x lý ch m c ñây 24. } 25. else 26. myStrings[myCtr++] = sChuoi; 27. } 28. //INDEXER: 29. public string this[int index] 30. { 31. get 32. { 33. if (index < 0 || index > myStrings.Length) 34. { 35. //x lý ch m c 36. } 37. return myStrings[index]; 38. } Biên t p:salomit Ngu n: Internet
  3. C# Cơ B n WWW.CSHARPVN.COM 39. set 40. { 41. if (index >= myCtr) 42. { 43. //x lý ch m c 44. } 45. else 46. myStrings[index] = value; 47. } 48. } 49. //phương th c này tr v ch m c ki m soát c a class 50. public int GetNumEntries() 51. { 52. return myCtr; 53. } 54. } Bây gi , trong thân phương th c Main, ta làm vài ño n code DEMO ñ ví d : Code: 1. class Program 2. { 3. static void Main(string[] args) 4. { 5. //t o m t ñ i tư ng th hi n c a class ListBoxTest 6. //và kh i gán 4 chu i: "Xin","Chao","Ba","Con" 7. //như là ñ i s 8. ListBoxTest lbt = new ListBoxTest("Xin", "Chao", "Ba", "Con"); 9. //thêm 3 chu i n a 10. lbt.Add("Moi nguoi"); 11. lbt.Add("manh khoe chu?"); 12. lbt[1] = "neverland87"; //myStrings[1] = "neverland87" 13. //ñi xuyên qua ñ i tư ng lbt 14. //và in ra các chu i mà nó n m gi 15. //d a và ch m c 16. for (int i = 0; i < lbt.GetNumEntries(); i++) 17. { 18. Console.WriteLine("lbt[{0}]:{1}", i, lbt[i]); 19. } 20. } 21. } ði u ñ u tiên, b n ñ ý là hai bi n thành viên private: Code: 1. private string[] myStrings; //m ng chu i 2. private int myCtr = 0; //bi n ki m soát ch mc Trong chương trình này, listbox duy trì m t m ng các chu i ch myStrings. Th t ra, th c t listbox có th s có Biên t p:salomit Ngu n: Internet
  4. C# Cơ B n WWW.CSHARPVN.COM m t m ng linh ñ ng ch ng h n. Bi n myCtr dùng theo dõi bao nhiêu chu i ch ñã ñư c ñưa vào. Phương th c ch ch t c a ListBoxTest là indexer. Indexer s không mang tên, do ñó b n s d ng t khóa this: Code: 1. public string this[int index] Biên t p:salomit Ngu n: Internet
ADSENSE

CÓ THỂ BẠN MUỐN DOWNLOAD

 

Đồng bộ tài khoản
2=>2