11

これら 2 つのクラスを相互に作用させ、クラス 1 から 4 つの異なるクラスを呼び出して、クラス 2 で使用しようとしています。

メソッドは公開されており、値を返しますが、何らかの理由で接続が確立されていません。試したときに表示されるエラーは次のとおりです。"An object reference is required for the nonstatic field, method, or property 'GradeBook.[method I want called]'"


すべて初期化しました。メソッドを静的として作成したくありません。私は自分の課題の詳細をもう一度読み直しましたが、そうするつもりはありませんが、とにかくこれを機能させることができないようです。

myGradeBook.[メソッド] GraceBook.[メソッド]

それはすべてエラーを作成するようです。

現在のエラー:

The best overloaded method match or 'System.Console.WriteLine(string, object)' has some invalid arguments.

Arugment '2': cannot convert from 'method group' to 'object'

私はそれらが何を意味するのかさえわかりません....

編集: Visual Studio のステップ イン機能のおかげで、その問題を修正しました。使用するのに時間がかかった理由がわかりません。

4

4 に答える 4

39

クラスでインスタンス メソッドを呼び出そうとしています。クラスでインスタンス メソッドを呼び出すには、メソッドを呼び出すインスタンスを作成する必要があります。インスタンス以外でメソッドを呼び出したい場合は、static キーワードを追加します。例えば

class Example {
  public static string NonInstanceMethod() {
    return "static";
  }
  public string InstanceMethod() { 
    return "non-static";
  }
}

static void SomeMethod() {
  Console.WriteLine(Example.NonInstanceMethod());
  Console.WriteLine(Example.InstanceMethod());  // Does not compile
  Example v1 = new Example();
  Console.WriteLine(v1.InstanceMethod());
}
于 2008-12-01T06:16:31.183 に答える
12

クラスをインスタンス化していないようです。これが、「オブジェクト参照が必要です」というエラーが表示される主な理由です。

MyClass myClass = new MyClass();

その行を追加したら、メソッドを呼び出すことができます

myClass.myMethod();

また、すべてのクラスは同じ名前空間にありますか? 私が最初に c# を学習したとき、これはよくあるつまずきのポイントでした。

于 2008-12-01T06:16:51.900 に答える
4

クラスの型の変数を作成し、最初にオブジェクトの新しいインスタンスと等しくなるように設定する必要があります。

GradeBook myGradeBook = new GradeBook();

次に、作成したばかりのオブジェクトでメソッドを呼び出します。

myGradeBook.[method you want called]
于 2008-12-01T06:16:03.383 に答える
2

たとえば、1と2では、静的メソッドを作成する必要があります。

public static string InstanceMethod() {return "Hello World";}

次に、たとえば3では、メソッドを呼び出すためにオブジェクトのインスタンスが必要です。

object o = new object();
string s = o.InstanceMethod();
于 2008-12-01T08:22:01.477 に答える