コンパイラ エラー CS0120
静的でないフィールド、メソッド、またはプロパティ 'member' で、オブジェクト参照が必要です
静的でないフィールド、メソッド、またはプロパティを使用するには、まずオブジェクト インスタンスを作成する必要があります。 静的メソッドの詳細については、「静的クラスと静的クラス メンバー」を参照してください。 クラスのインスタンスの作成方法については、「インスタンス コンストラクター」を参照してください。
例 1
次の例では CS0120 が生成されます。
// CS0120_1.cs
public class MyClass
{
// Non-static field.
public int i;
// Non-static method.
public void Method() { }
// Non-static property.
public int Prop
{
get
{
return 1;
}
}
public static void Main()
{
i = 10; // CS0120
Method(); // CS0120
int p = Prop; // CS0120
}
}
このエラーを解決するには、まずクラスのインスタンスを作成します。
// CS0120_1.cs
public class MyClass
{
// Non-static field.
public int i;
// Non-static method.
public void Method() { }
// Non-static property.
public int Prop
{
get
{
return 1;
}
}
public static void Main()
{
var mc = new MyClass();
mc.i = 10;
mc.Method();
int p = mc.Prop;
}
}
例 2
CS0120 は、次のように静的メソッドから非静的メソッドへの呼び出しがある場合にも生成されます。
// CS0120_2.cs
public class MyClass
{
public void Method() { }
public static void Main()
{
Method(); // CS0120
}
}
このエラーを解決するには、まずクラスのインスタンスを作成します。
// CS0120_2.cs
public class MyClass
{
public void Method() { }
public static void Main()
{
var mc = new MyClass();
mc.Method();
}
}
例 3
同様に、明示的にクラスのインスタンスを指定しない限り、静的メソッドでインスタンス メソッドを呼び出すことはできません。次に例を示します。
// CS0120_3.cs
using System;
public class MyClass
{
public static void Main()
{
DoIt("Hello There"); // CS0120
}
private void DoIt(string sText)
{
Console.WriteLine(sText);
}
}
このエラーを修正するため、メソッド定義にキーワード static を追加することもできます。
// CS0120_3.cs
using System;
public class MyClass
{
public static void Main()
{
DoIt("Hello There");
}
private static void DoIt(string sText)
{
Console.WriteLine(sText);
}
}
関連項目
GitHub で Microsoft と共同作業する
このコンテンツのソースは GitHub にあります。そこで、issue や pull request を作成および確認することもできます。 詳細については、共同作成者ガイドを参照してください。
.NET
フィードバック
https://aka.ms/ContentUserFeedback」を参照してください。
以下は間もなく提供いたします。2024 年を通じて、コンテンツのフィードバック メカニズムとして GitHub の issue を段階的に廃止し、新しいフィードバック システムに置き換えます。 詳細については、「フィードバックの送信と表示