私は 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 から次の説明が表示されます。GetType
ToString
oItem.Property1
Member
MyDataLayer.Section1.MyClass.MyItem.Property1.getcannot be accessed with an instance reference, qualify it with a type name instead
これが何を意味するのかよく分かりません。グーグルで検索してみましたが、わかりませんでした。
ベストアンサー1
static
C# では、VB.NET や Java とは異なり、インスタンス構文を使用してメンバーにアクセスすることはできません。次のようにする必要があります。
MyClass.MyItem.Property1
そのプロパティを参照するか、static
修飾子を削除しますProperty1
(おそらくこれがやりたいことです)。それが何でstatic
あるかについての概念的なアイデアについては、私の他の回答を参照してください。