0

我想要一个 Indexer,但 setter 和 getter 的类型应该不同。

public Foo this[string key]
{
    get
    {
        return FindFoo(key);
    }
}
public Bar this[string key]
{
    set
    {
        DoMagic(key, value);
    }
}

当我尝试:

myClass["hello"] = coolBar;

它说:电话不明确

有没有办法做到这一点?

4

1 回答 1

6

我想要一个 Indexer,但 setter 和 getter 的类型应该不同。

你不能这样做,基本上 - 当两个索引器具有相同的签名时。

即使你可以,我会说这将是一个非常奇怪的设计,这会让你的 API 的用户感到惊讶。

C# 规范的相关位是第 10.9 节:

索引器的签名必须不同于在同一类中声明的所有其他索引器的签名。

于 2013-09-13T11:10:11.363 回答