在C#中声明两个具有不同类型但名称相似的属性

时间:2013-03-19 10:55:47

标签: c# properties

我可以声明两个不同类型的属性,但在C#中具有相似的名称。 像这样:

public class Types
{
    public string Element
        {
            get { return ""; }
        }
    public int Element
        {
            get { return 0; }
        }
}

2 个答案:

答案 0 :(得分:5)

类似名称?是。 相同的名称?否。

在同一个类中,只有两个具有相同名称的成员才能使用构造函数和方法 - 并且每个重载必须具有不同的签名。

从C#4规范,第10.3节:

  

常量,字段,属性,事件或类型的名称必须与同一类中声明的所有其他成员的名称不同。

如果允许 ,那将会非常混乱并导致明显模糊的代码:

Types types = new Types();
object x = types.Element; // What would this do?

答案 1 :(得分:2)

您需要运行您编写的代码并获取错误,但您可能需要类似于下面的内容

  public class Types<T>
    {
        public T Element
        {
            get { return default(T); }
        }

    }