1

静的配列があり、その任意の要素を非静的メソッドに渡す必要があります。

それ、どうやったら出来るの?

public class MyClass
{
    public static int[] staticArray = { 3, 11, 43, 683, 2731 };

    public void SomeMethod(int value)
    {
        //...stuff...
    }

    public static void staticMethod()
    {
         SomeMethod(staticArray[2]);    //error here
    }
}

そのようなことをしようとすると、エラーが発生しますAn object reference is required for the non-static field, method, or property

4

1 に答える 1

6

そのままのコードは問題ありません'An object reference is required for the non-static field, method, or property'が、メソッドを呼び出そうとしinstanceたり、静的メソッドなどからクラスのインスタンス以外の非静的フィールド/プロパティにアクセスしようとすると発生します。例えば:

class MyClass
{
    private int imNotStatic;

    public static void Bar()
    {
        // This will give you your 'An object reference is required` compile 
        // error, since you are trying to call the instance method SomeMethod
        // from a static method, as there is no 'this' to call SomeMethod on.
        SomeMethod(5);

        // This will also give you that error, as you are calling SomeMethod as
        // if it were a static method.
        MyClass.SomeMethod(42);

        // Again, same error, there is no 'this' to read imNotStatic from.
        imNotStatic = -1;
    }

    public void SomeMethod(int x)
    {
        // Stuff
    }
}

上記のいずれかを行っていないことを確認してください。SomeMethodコンストラクタから呼び出していますか?

于 2013-03-02T15:01:06.933 に答える