「使用」タイプのオブジェクトを関数に渡す方法は?
質問
次のようなコードがあります:
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;
}
しかし、まだ動作しませんでした
解決
これは、usingステートメントとは関係ありません。 Mainから静的ではないメンバー関数を呼び出そうとしています。 「f」はインスタンスメソッドであるため、これを行うことはできません。つまり、プログラムクラスのインスタンス上またはインスタンスから呼び出す必要があります。そのため、関数fを静的にする必要があります。
他のヒント
fは、おそらくProgramクラスのインスタンスメソッドですか? Mainからfを呼び出す場合、Mainは静的メソッドであるため、Programのインスタンスはありません。 fを静的に変更します。
static void f(DC dc, int a) { ... }
所属していません StackOverflow