【问题标题】:declare two properties with different type but with similar name in C# [closed]在 C# 中声明两个具有不同类型但名称相似的属性 [关闭]
【发布时间】:2013-03-08 00:15:39
【问题描述】:

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

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

【问题讨论】:

  • 不,你不能那样做。你为什么不自己尝试一下?!
  • 编译器告诉你什么?这些名字不相似,它们是相同的
  • 您是否尝试过实际编译您的代码。你会比在 SO...上提问更快得到答案。
  • 请用正确的术语,从你的例子来看,你的意思是With the same name而不是With similar name
  • 可能会建议如何做这样的事情?

标签: c# properties


【解决方案1】:

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

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

来自 C# 4 规范,第 10.3 节:

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

如果这个被允许,那将会非常混乱并导致明显的模棱两可的代码:

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

【讨论】:

    【解决方案2】:

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

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2023-01-11
      相关资源
      最近更新 更多