これまで一度も遭遇したことがないとは信じられませんが、このコードでコンパイラ エラーが発生するのはなぜですか?
public class Main
{
public Main()
{
var ambiguous = new FooBar(1);
var isConfused = ambiguous.IsValid; // this call is ambiguous
}
}
public class FooBar
{
public int DefaultId { get; set; }
public FooBar(int defaultId)
{
DefaultId = defaultId;
}
public bool IsValid
{
get { return DefaultId == 0; }
}
public bool IsValid(int id)
{
return (id == 0);
}
}
エラーメッセージは次のとおりです。
「FooBar.IsValid」と「FooBar.IsValid(int)」の間のあいまいさ
なぜこれがあいまいなのですか?
あいまいであってはならない2つの理由があると思います。
- の後に括弧はありません
IsConfused
。 - の int 引数はありません
IsConfused
。
あいまいさはどこにありますか?