Не могу поверить, что я никогда не сталкивался с этим раньше, но почему я получаю ошибку компилятора для этого кода?
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)'
Почему это неоднозначно?
Я думаю, что есть две причины, почему это не должно быть двусмысленным:
- После
IsConfused
нет парафаз. - Нет аргумента int для
IsConfused
.
Где двусмысленность?