如何创建像dataTable.Columns[0].ColumnName
这样的嵌套属性?
答案 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”