具有索引器和名为"Item"的属性的类

Mic*_*ael 28 .net c# indexer

是否可以在.NET 4中创建一个类:

  1. 一个索引器,
  2. 一个名为"Item"的属性?

例如,这个C#类不会为我编译:

public class MyClass
{
    public object Item { get; set; }
    public object this[string index] { get { return null; } set { } }
}
Run Code Online (Sandbox Code Playgroud)

编译器给出错误CS0102:

"MyClass"类型已包含"Item"的定义

虽然我只是明确定义Item一次.

Jac*_*ing 40

基于此站点,可以使用属性重命名索引器

public class MyClass
{
    public object Item { get; set; }
    [System.Runtime.CompilerServices.IndexerName("MyItem")]
    public object this[string index] { get { return null; } set { } }
}
Run Code Online (Sandbox Code Playgroud)


Dan*_*eny 27

C#内部创建一个名为Item不支持索引器的语言的属性.您可以使用IndexerNameAttribute控制此名称,如下所示:

[IndexerName("MyIndexer")]
public object this[string index]
{
    get { return blah; }
}
Run Code Online (Sandbox Code Playgroud)