2012-10-04

[C#] 索引子- Indexer

 

人老了總是會遺忘.. 這是很久以前 C# 裡面就有的東西..

這也是為什麼在 JSON.net 中我們可以這樣寫..

jobject["Friend"]["Name"]
 
這就是透過索引子 indexer 所辦到的..

這跟array 很像但是不同的是他可以透過string 的方式去找尋某集合的個體


直接看程式



public class User
 {
     //所有User
     private List<string> AllUser { get; set; }
     //Ctor
     public User(int num)
     {
         //Init
         AllUser = new List<string>();
         //使用者放入多少數字我就建立多少資料進入AllUser
         for (int i = 0; i <= num; i++)
         {
             AllUser.Add("使用者" + i);
         }
     }
     //Indexer 數字
     public string this[int index]
     {
         get
         {
             if (index < AllUser.Count)
             {
                 return AllUser[index];
             }
             else
             {
                 return "Error";
             }
         }
         set
         {
             AllUser[index] = value;
         }
     }
     //Indexer Overloading 文字
     public string this[string indexValue]
     {
         get
         {
             foreach (var user in AllUser)
             {
                 if(user==indexValue)
                 {
                     return AllUser.IndexOf(user).ToString();
                 }
             }
             return "No User";
         }
      
     }
 }

 


其中 AllUser 被我封裝起來…


之後我允許使用者透過indexer 透過數字去找尋AllUser


如果輸入文字 就會回覆 該User 所在位置..


操作端:



User users = new User(10);
Response.Write(users[9] + "<br />");
//使用者 9
Response.Write(users["使用者2"] + "<br />");
// 2

是不是超簡單的..解開一個我小小疑惑..


最近碰比較設計模型面的東西.. 


這東西在規劃上面很有幫助,也增加很多彈性..


 


MSDN:


http://msdn.microsoft.com/en-us/library/2549tw02