小编典典

成员 '' 不能通过实例引用访问

all

我正在进入 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 会给我这样的解释:

MemberMyDataLayer.Section1.MyClass.MyItem.Property1.getcannot be accessed with an instance reference, qualify it with a type name instead

我不确定这意味着什么,我做了一些谷歌搜索,但无法弄清楚。


阅读 69

收藏
2022-06-13

共1个答案

小编典典

在 C# 中,与 VB.NET 和 Java 不同,您不能static使用实例语法访问成员。你应该做:

MyClass.MyItem.Property1

引用该属性或static从中删除修饰符Property1(这可能是您想要做的)。有关什么static是概念性的想法,请参阅我的其他答案

2022-06-13