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

本文关键字:属性 相似 类型 两个 声明 | 更新日期: 2023-09-27 18:04:34

我可以在c#中声明两个类型不同但名称相似的属性吗?像这样:

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

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

名称相似 ?是的。相同的名称?没有。

在同一个类中声明两个具有相同名称的成员的唯一情况是使用构造函数和方法,并且它们必须对每个重载具有不同的签名。

来自c# 4规范第10.3节:

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

如果这个允许的,它将非常令人困惑,并导致明显模糊的代码:

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

你需要运行你写的代码并得到错误,但你可能想要类似下面的东西

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