我正在进入 C#,我遇到了这个问题:
namespace MyDataLayer { namespace Section1 { public class MyClass { public class MyItem { public static string Property1{ get; set; } } public static MyItem GetItem() { MyItem theItem = new MyItem(); theItem.Property1 = "MyValue"; return theItem; } } } }
我在 UserControl 上有这段代码:
using MyDataLayer.Section1; public class MyClass { protected void MyMethod { MyClass.MyItem oItem = new MyClass.MyItem(); oItem = MyClass.GetItem(); someLiteral.Text = oItem.Property1; } }
一切正常,除非我去访问Property1。智能感知只给我 ” Equals, GetHashCode, GetType, 和ToString” 作为选项。当我将鼠标悬停在 上时oItem.Property1,Visual Studio 会给我这样的解释:
Property1
Equals
GetHashCode
GetType
ToString
oItem.Property1
MemberMyDataLayer.Section1.MyClass.MyItem.Property1.getcannot be accessed with an instance reference, qualify it with a type name instead
Member
cannot be accessed with an instance reference, qualify it with a type name instead
我不确定这意味着什么,我做了一些谷歌搜索,但无法弄清楚。
在 C# 中,与 VB.NET 和 Java 不同,您不能static使用实例语法访问成员。你应该做:
static
MyClass.MyItem.Property1
引用该属性或static从中删除修饰符Property1(这可能是您想要做的)。有关什么static是概念性的想法,请参阅我的其他答案。