是否可以使用以下命令在.NET 4中创建一个类
例如,这个C#类不会为我编译:
public class MyClass
{
public object Item { get; set; }
public object this[string index] { get { return null; } set { } }
}
编译器发出错误CS0102:
“MyClass”类型已包含“Item”
的定义
虽然我只是明确定义Item
一次。
答案 0 :(得分:40)
基于this site,可以使用属性重命名Indexer
public class MyClass
{
public object Item { get; set; }
[System.Runtime.CompilerServices.IndexerName("MyItem")]
public object this[string index] { get { return null; } set { } }
}
答案 1 :(得分:27)
C#内部为不支持索引器的语言创建一个名为Item
的属性。您可以使用IndexerNameAttribute控制此名称,如下所示:
[IndexerName("MyIndexer")]
public object this[string index]
{
get { return blah; }
}
答案 2 :(得分:4)
如果我没记错的话,可以通过“Item()”方法从VB.Net访问这样的索引器。那将是“定义两次”的地方。