Indexer的getter和setter的不同类型

Yve*_*ves 0 c# indexer

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

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

当我尝试:

myClass["hello"] = coolBar;
Run Code Online (Sandbox Code Playgroud)

它说:电话不明确

反正有没有这样做?

Jon*_*eet 6

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

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

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

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

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