Possible Duplicate:
Why can I only access static members from a static function?なぜ静的メソッドは、私はエラーを得た静的メソッドの内部から、通常のメソッドを呼び出そうとしている間だけの静的メソッドではない非静的メソッド
を呼び出すことが許可されていますクラスのオブジェクトを作成し、非静的メソッドを呼び出す必要があることを意味します。メソッドを直接呼び出す場合は、そのメソッドをStaticとして宣言する必要があります。
ただし、このシナリオでは、呼び出し元のメソッドと呼び出されたメソッドが同じクラスに属しています。だから、静的メソッドから呼び出すときにオブジェクトを作成する必要があるのに対して、静的でないメソッドから非静的メソッドを呼び出すことができるのはなぜですか。
例:
class Program
{
//public void outTestMethod(int x,out int y)
//{
// y = x;
//}
static void Main(string[] args)
{
int a = 10;
int b = 100;
outTestMethod(a,out b);
}
private void outTestMethod(int x, out int y)
{
y = x;
}
}
Error:An object reference is required for the non-static field, method, or property
あなたの例では、 'private static void outTestMethod'を実行するだけで動作します。あなたが言ったように、「オブジェクトを作成する」必要はありません。 – Icarus
エラーとは、エラーを意味します。静的メソッドは静的メンバーにのみアクセスできます(参照するインスタンスがないため)。静的メソッドはプログラムインスタンスのメンバーにアクセスできます(この特定のサンプルには何もありません)。クラスの複数のインスタンスを持つこと。 –