gpt4 book ai didi

c# - 为什么一个类不能有同名的静态或常量属性和实例属性?

转载 作者:太空狗 更新时间:2023-10-29 20:08:49 25 4
gpt4 key购买 nike

我以前从未真正质疑过这个问题。我有一个包含多个字段的输入模型,我想通过输入模型显示属性的字符串名称,以便我的网格可以使用它们:

public class SomeGridRow
{
public string Code { get;set; }
public string Description { get;set; }

public const string Code = "Code";
}

显然,这给出了错误:

The type 'SomeGridRow' already contains a definition for 'Code'

为什么 CLR 不能处理两个在我看来是分开的同名属性?

string code = gridRow.Code;          // Actual member from instantiated class
string codeField = SomeGridRow.Code; // Static/Const

我现在只是在我的输入中使用一个名为 Fields 的子类,所以我可以使用 SomeGridRow.Fields.Code。这有点困惑,但它确实有效。

最佳答案

因为您也可以以相同的方式(在同一个类中)访问静态(或本例中的非实例)属性,这会有点困惑,例如:

public class SomeGridRow
{
public string Code { get;set; }
public const string Code = "Code";
public void MyMethod() {
var thing = Code; //what would this reference?
}
}

因为这两者:

public class SomeGridRow
{
public string Code { get;set; }
public void MyMethod() {
var thing = Code; //what would this reference?
}
}

还有这个:

public class SomeGridRow
{
public const string Code = "Code";
public void MyMethod() {
var thing = Code; //what would this reference?
}
}

是访问属性的有效方式,无论是静态的还是非静态的。它没有回答“为什么我不能?”问题,但更多的是为什么不允许这样做……在 IMO 看来,这太含糊了。

关于c# - 为什么一个类不能有同名的静态或常量属性和实例属性?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3871161/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com