了解C#中的属性

时间:2013-12-29 12:27:35

标签: c# .net wpf

我正在浏览一个示例C#(WPF)代码,我遇到了以下块:

public string this[string columnName]
{
    get
    {
        if (columnName == "FirstName") {
             return string.IsNullOrEmpty(this.firstName) ? "Required value" : null;
         }
         if (columnName == "LastName") {
             return string.IsNullOrEmpty(this.lastName) ? "Required value" : null;
         }
         return null;
    }
}

此代码块用于执行数据验证。通过它的外观它看起来像一个属性,因为它包含get{}块。只想了解语法的语义含义:

public string this[string columnName]

3 个答案:

答案 0 :(得分:4)

这些被称为Indexers

  

索引器允许对类或结构的实例进行索引   阵列。索引器类似于属性,除了它们的访问器   参数。

说班级名称为TestClass。它允许这样:

TestClass testObject = new TestClass();
string firstName = testObject["FirstName"];

一个可能的示例将是 Dictionary ,它在内部使用索引器。它允许您从与关键元素对应的字典中获取值:

Dictionary<int,string> dict = new Dictionary<int,string>();
dict.Add(1, "Test1");
string value = dict[1]; // value will be Test1.

答案 1 :(得分:0)

它意味着你可以过去&#34;这个&#34;通过索引。例如,如果类的名称是IndexClass,则可以执行以下操作:

IndexClass IC = new IndexClass();
string name= IC["FirstName"];
string name2=IC["LastName"];

此索引器返回一个字符串,其类型为string。你只能在[]内找到一个字符串,而不是任何其他类型的字符串。

答案 2 :(得分:0)

Indexers允许您向类中添加索引器,并使用类似index的数组访问它。所有集合都使用索引器,您也可以在创建自己的集合时使用它。

但取决于您的代码,也可以使用属性来完成:

public string FirstName 
{ 
   get { return string.IsNullOrEmpty(this.firstName) ? "Required value" : null; } 
}

public string LastName 
{ 
  get { return string.IsNullOrEmpty(this.firstName) ? "Required value" : null; } 
}