0

次のようなコードがあります。

using (DC dc = new DC())
{
    f(dc.obj, a);
}


void f(DC dc, int a)
{
    ...
    dc.obj = a;
}

機能しません-オブジェクト参照と非静的フィールドについて不平を言います。これはコンソール アプリケーションなので、Main() 関数があります。どうすれば機能しますか?尋ねられたので、参照を追加してみました:

次のようなコードがあります。

using (DC dc = new DC())
{
    f(ref dc.obj, a);
}


void f(ref DC dc, int a)
{
    ...
    dc.obj = a;
}

しかし、それでも機能しませんでした

4

2 に答える 2

3

これは、using ステートメントとは関係ありません。静的な Main から非静的メンバー関数を呼び出そうとしています。'f' はインスタンス メソッドであるため、これを行うことはできません。つまり、Program クラスのインスタンスに対して、またはインスタンスから呼び出す必要があります。したがって、関数 f を static にする必要があります。

于 2009-10-30T04:07:58.373 に答える
2

f は、おそらく Program クラスのインスタンス メソッドですよね?Main から f を呼び出している場合、Main は静的メソッドであるため、Program のインスタンスはありません。f を static に変更します。

static void f(DC dc, int a) { ... }
于 2009-10-30T04:08:08.933 に答える