我可以在 C# 中声明两个具有不同类型但名称相似的属性吗?像这样的东西:
public class Types
{
public string Element
{
get { return ""; }
}
public int Element
{
get { return 0; }
}
}
我可以在 C# 中声明两个具有不同类型但名称相似的属性吗?像这样的东西:
public class Types
{
public string Element
{
get { return ""; }
}
public int Element
{
get { return 0; }
}
}
同名?是的。同名?_ 不。
唯一可以在同一个类中声明两个具有相同名称的成员的情况是使用构造函数和方法——并且对于每个重载,它们必须具有不同的签名。
从 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); }
}
}