-3

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

4

4 回答 4

6

它们本身不是“创建”的,它只是Columns某种类型的对象的集合,并且该类型公开了 property ColumnName

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

foo.Objects[0].Property
于 2012-09-13T13:16:34.270 回答
1

dataTable.Columns[0].ColumnName结合了 a 的概念和 aproperty的概念indexer

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

所以dataTable.Columns[0].ColumnName应该读作“从对象数据表的集合属性列中获取第一个元素的属性列名”

于 2012-09-13T13:21:53.203 回答
1

Property returns an object which has own properties and so on

于 2012-09-13T13:17:32.653 回答
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#了)

于 2012-09-13T13:18:49.013 回答