相关疑难解决方法(0)

如何在属性getter和带有一个参数的方法之间存在歧义?

我不敢相信我以前从未遇到过这个,但为什么我的代码会出现编译器错误?

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);
    }
}
Run Code Online (Sandbox Code Playgroud)

这是错误消息:

'FooBar.IsValid'和'FooBar.IsValid(int)'之间的歧义

为什么这个含糊不清?

我认为有两个原因不应该含糊不清:

  1. 之后没有父母IsConfused.
  2. 没有int参数IsConfused.

歧义在哪里?

.net c# compiler-errors ambiguity

12
推荐指数
2
解决办法
1万
查看次数

标签 统计

.net ×1

ambiguity ×1

c# ×1

compiler-errors ×1