C# 使用索引器和名为“的属性初始化”;项目「;
是否可以在.NET 4中创建具有以下内容的类:C# 使用索引器和名为“的属性初始化”;项目「;,c#,.net,indexer,C#,.net,Indexer,是否可以在.NET 4中创建具有以下内容的类: 索引器 名为“Item”的属性 例如,这个C#类不会为我编译: public class MyClass { public object Item { get; set; } public object this[string index] { get { return null; } set { } } } 编译器给出了一个错误: 类型“MyClass”已包含“Item”的定义 虽然我只显式定义了项一次。如果我没记错的话,这样的
public class MyClass
{
public object Item { get; set; }
public object this[string index] { get { return null; } set { } }
}
编译器给出了一个错误:
类型“MyClass”已包含“Item”的定义
虽然我只显式定义了
项
一次。如果我没记错的话,这样的索引器可以通过“Item()”方法从VB.Net访问。这就是“定义两次”的来源。基于,可以使用属性重命名索引器
public class MyClass
{
public object Item { get; set; }
[System.Runtime.CompilerServices.IndexerName("MyItem")]
public object this[string index] { get { return null; } set { } }
}
C#在内部为不支持索引器的语言创建一个名为Item
的属性。您可以使用控制此名称,如下所示:
[IndexerName("MyIndexer")]
public object this[string index]
{
get { return blah; }
}