首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >无法使用实例引用访问成员“< Member name>”

无法使用实例引用访问成员“< Member name>”
EN

Stack Overflow用户
提问于 2009-07-08 19:11:17
回答 10查看 417.2K关注 0票数 222

我正在进入C#,我遇到了这个问题:

代码语言:javascript
复制
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上有以下代码:

代码语言:javascript
复制
using MyDataLayer.Section1;

public class MyClass
{
    protected void MyMethod
    {
        MyClass.MyItem oItem = new MyClass.MyItem();
        oItem = MyClass.GetItem();
        someLiteral.Text = oItem.Property1;
    }
}

一切正常,除了我访问Property1的时候。智能感知只给我提供"EqualsGetHashCodeGetTypeToString“作为选项。当我把鼠标移到oItem.Property1上时,Visual Studio给了我这样的解释:

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

我不确定这是什么意思,我用谷歌搜索了一下,但没能弄明白。

EN

回答 10

Stack Overflow用户

回答已采纳

发布于 2009-07-08 19:13:28

在C#中,与VB.NET和Java不同,您不能使用实例语法访问static成员。您应该执行以下操作:

代码语言:javascript
复制
MyClass.MyItem.Property1

引用该属性或从Property1中删除static修饰符(这可能是您想要做的)。以获得关于static is, see my other answer的概念。

票数 318
EN

Stack Overflow用户

发布于 2009-07-08 19:19:38

只能使用类型的名称访问静态成员。

因此,您需要编写以下代码,

代码语言:javascript
复制
MyClass.MyItem.Property1

或者(这可能是您需要做的)通过从其定义中删除static关键字来使Property1成为实例属性。

静态属性在其类的所有实例之间共享,因此它们只有一个值。按照现在的定义方式,创建MyItem类的任何实例都没有意义。

票数 49
EN

Stack Overflow用户

发布于 2013-08-23 00:44:50

我也遇到了同样的问题--尽管几年后,有些人可能会发现一些提示很有帮助:

不要无端使用‘static’!

理解“静态”在运行时和编译时语义(行为)和语法方面的含义。

  • 静态实体将在一段时间之前自动构建

它的第一个用法。

  • 静态实体分配了一个存储位置,即

由访问该实体的所有用户共享。

  • 静态实体只能通过其类型名称进行访问,而不是

  • 静态方法没有隐式的‘this’参数,实例方法也没有。(因此静态方法的执行次数较少

开销-使用它们的一个原因。)

  • 在使用静态实体时考虑线程安全。

关于MSDN中的静态的一些细节:

票数 31
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/1100009

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档