メンバー ' ' はインスタンス参照ではアクセスできません 質問する

メンバー ' ' はインスタンス参照ではアクセスできません 質問する

私は 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が表示されます。 の上にマウスを置くと、Visual Studio から次の説明が表示されます。GetTypeToStringoItem.Property1

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

これが何を意味するのかよく分かりません。グーグルで検索してみましたが、わかりませんでした。

ベストアンサー1

staticC# では、VB.NET や Java とは異なり、インスタンス構文を使用してメンバーにアクセスすることはできません。次のようにする必要があります。

MyClass.MyItem.Property1

そのプロパティを参照するか、static修飾子を削除しますProperty1(おそらくこれがやりたいことです)。それが何でstaticあるかについての概念的なアイデアについては、私の他の回答を参照してください

おすすめ記事