2014-06-19 164 views
0

什麼需要解釋一些代碼。

public object this[string name] 

class ObjectWithProperties 
{ 
    Dictionary<string, object> properties = new Dictionary<string, object>(); 

    public object this[string name] 
    { 
     get 
     { 
      if (properties.ContainsKey(name)) 
      { 
       return properties[name]; 
      } 
      return null; 
     } 
     set 
     { 
      properties[name] = value; 
     } 
    } 
} 
+0

你這裏有什麼是索引屬性,能夠閱讀到更多安博他們在這裏http://msdn.microsoft.com/en-gb/library/aa288464(v=vs.71).aspx –

回答

6

你將能夠在你的字典裏,直接從您的對象使用索引(即,無屬性名稱)

參考值,在你的情況它將是

var foo = new ObjectWithProperties(); 
foo["bar"] = 1; 
foo["kwyjibo"] = "Hello world!" 

// And you can retrieve them in the same manner... 

var x = foo["bar"]; // returns 1 

MSDN指南:http://msdn.microsoft.com/en-gb/library/2549tw02.aspx

基礎教程:http://www.tutorialspoint.com/csharp/csharp_indexers.htm

編輯回答問題的評論:

這相當於做類似如下:

class ObjectWithProperties 
{ 
    public Dictionary<string, object> Properties { get; set; } 

    public ObjectWithProperties() 
    { 
     Properties = new Dictionary<string, object>(); 
    } 
} 

// instantiate in your other class/app/whatever 
var objWithProperties = new ObjectWithProperties(); 
// set 
objWithProperties.Properties["foo"] = "bar"; 
// get 
var myFooObj = objWithProperties.Properties["foo"]; // myFooObj = "bar" 
+0

這個是什麼的顯著公共對象本[字符串名稱]。 –

+0

正如MSDN文檔中描述,這是簡單的「語法上的方便」 – Rich

+0

有沒有任何其它的方式,而不是在上面的代碼公開對象本[字符串名稱] :) –