c# - 无法在 C# 中创建两个具有相同名称的属性

标签 c# class properties polymorphism

我创建了两个名称相同但数据类型不同的属性。 我收到此错误:

The type 'Fields' already contains a definition for 'Subject'

是否有可能克服这个问题?

public String Subject
{
     get { return this.subject; }
     set { this.subject = value; }
} 

public AppSettings Subject
{
     get { 
         return this.subjectObj; }
     set { 
         this.subjectObj = value; }
}

最佳答案

不,这不可能。使用它们时,您将无法区分这些属性。在这种情况下,您如何知道设置了哪个属性?

someInstance.Subject = null;

class members 的官方文档指出:

The name of a constant, field, property, event, or type must differ from the names of all other members declared in the same class.


可能的解决方案:

您的命名表明您可能想要创建另一个类 Subject 至少有两个属性。 (没有更多上下文,我不能说这是否合适。)

public class Subject
{
    public string Name { get; set; }
    public AppSettings Settings { get; set; }
}

这个新类可以在原来的类中使用:

public OriginalClass
{
    public Subject subject { get; set; }
}

关于c# - 无法在 C# 中创建两个具有相同名称的属性,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33082520/

相关文章:

c# - 可以在不循环的情况下通过列表填充字典值吗?

c++ - 在 AngelScript 中注册一个 C++ 类并传递一个类实例

D 中的属性和引用返回值

javascript - 如何从javascript中的对象中删除时间?

c# - EF6 代码第一个模型 ForeignKey

C# 未从 HttpWebResponse 获得正确的响应。编码?

c# - 获取 CRM 实体名称的简便方法

c# - 使用 Linq 按列表中的多列分组并标记所有重复项

android - 从不同的应用程序访问静态字段

Python 属性也作为类属性