問題: C# プログラムで、インスタンス構文を使用して静的メンバーにアクセスすると、「インスタンス参照を使用してメンバー '(メンバー名)' にアクセスできません」というエラーが発生します。
根本原因:
C# では、VB.NET や Java などの他の言語とは異なり、インスタンス参照を通じて静的メンバーにアクセスできません。静的メンバーは、クラスの単一のインスタンスではなく、クラス自体に属します。
例:
次のコードを考えてみましょう:
<code class="language-csharp">public class MyClass { public static string StaticProperty { get; set; } public static MyClass StaticMethod() { /* code */ } } public class TestClass { public void Example() { // 错误:尝试使用实例访问静态属性 string value = MyClass.StaticProperty; // 编译错误 // 正确:使用类引用访问静态方法 MyClass instance = MyClass.StaticMethod(); } }</code>
解決策:
静的メンバーにアクセスするには、クラス名を修飾子として使用します。例:
<code class="language-csharp">string value = MyClass.StaticProperty;</code>
別の方法:
インスタンス構文を使用してプロパティにアクセスできるようにするには、static
修飾子を削除し、インスタンス プロパティとして宣言します。
<code class="language-csharp">public class MyClass { public string Property { get; set; } // 实例属性 public static MyClass StaticMethod() { /* code */ } } public class TestClass { public void Example() { // 正确:使用实例访问实例属性 string value = MyClass.Property; // 这行代码有问题,应该实例化MyClass // 正确:使用类引用访问静态方法 MyClass instance = MyClass.StaticMethod(); } }</code>
静的メンバーとインスタンス メンバーの違いを理解することで、「インスタンス参照を使用してメンバーにアクセスできません」エラーを回避し、C# プログラムでメンバーに正しくアクセスできます。 最初に TestClass
オブジェクトをインスタンス化する必要があるため、変更された MyClass.Property
では、MyClass
へのアクセスは依然として正しくないことに注意してください。 正しいアクセス方法は次のとおりです: MyClass myClassInstance = new MyClass(); string value = myClassInstance.Property;
以上がC# のインスタンスで静的メンバーにアクセスできないのはなぜですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。