如何创建嵌套属性

时间:2012-09-13 13:13:01

标签: c# properties

如何创建像dataTable.Columns[0].ColumnName这样的嵌套属性?

4 个答案:

答案 0 :(得分:6)

它们本身并非“创建”,只是Columns是某种类型的对象集合,而该类型公开了属性ColumnName

class Some
{
    string Property { get; set; }
}
class Foo
{
    public List<Some> Objects { get; set; }
}

foo.Objects[0].Property

答案 1 :(得分:1)

属性返回一个具有自己属性的对象,依此类推

答案 2 :(得分:1)

在您的示例中,dataTable.Columns是一个简单的索引属性,它返回另一个具有名为ColumnName的属性的对象。

例如:

class Table
{
    private Column[] columns;
    public Column Columns[int index]
    {
        get
        {
            return columns[index];
        }
    }
}

class Column
{
    public string ColumnName
    {
        get;
        set;
    }
}

(不是100%肯定语法,我有一段时间没用过C#)

答案 3 :(得分:1)

dataTable.Columns[0].ColumnName结合了property的概念和indexer的概念:

  • 对象dataTable公开名为Columns
  • 的属性
  • Columns属于集合类型,因此使用indexer来处理该集合中的某个元素,Columns[0]代表第一个元素(第一个加零),第二个Columns[1](第一个是第一个),aso
  • 这些元素中的每一个都是一个对象,暴露了属性ColumnName

所以dataTable.Columns[0].ColumnName应该被理解为,“从对象dataTable的集合 - 属性列中获取第一个元素的属性ColumnName”