Indexer的getter和setter的不同类型

时间:2013-09-13 11:09:15

标签: c# indexer

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

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

当我尝试:

myClass["hello"] = coolBar;

它说:电话不明确

有没有这样做?

1 个答案:

答案 0 :(得分:6)

  

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

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

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

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

  

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