CS0102类型'A'已经包含'set_color'的定义

时间:2017-10-23 21:03:27

标签: c# .net

我在尝试编译通过svcutil生成的代理类时遇到了上述错误。这是问题的简短版本:

class A
{
    private string colorField;
    private string set_colorField; 

    public string color
    {
        get
        {
            return this.colorField;
        }
        set
        {
            this.colorField = value;
        }
    }

    public string set_color
    {
        get
        {
            return this.set_colorField;
        }
        set
        {
            this.set_colorField = value;
        }
    }
}

编译好:

public string Color
{
    get;set;
}

public string Set_Color
{
    get;set;
}

但这引发了同样的错误:

public string color
{
    get;set;
}

public string set_color
{
    get;set;
}

我不记得曾经读过这个限制。有人能指出我对C#编译规范的相关部分吗?

1 个答案:

答案 0 :(得分:10)

https://github.com/dotnet/csharplang/blob/master/spec/classes.md#properties

  

为媒体资源保留的会员名称

     

对于类型T的属性P(属性),以下签名是   保留:

T get_P();
void set_P(T value);

如果您拥有color属性,则保留set_color(...),这也是您无法拥有set_color属性的原因,因为它尝试编译同一个签名。

如果您拥有Color属性,则为set_Color(...)保留Set_Color,这就是row1 <- c(1,1,1,0,0,0, NA, NA) row2 <- c(1,1,1,0,0,0, NA, NA) test <- t(data.frame(row1, row2)) for (j in 1:length(test)) { binary <- test[, j] if (binary[1] == 1 & binary[2] == 1) { print("A") } else if (binary[1] == 1 & binary[2] == 0) { print("B") } else (is.na(binary[1]) | is.na(binary[2])) { print("NA") } } (请注意大写字母)有效的原因。