私は本当にC#の新機能です。実行時にローカルで宣言されたフィールドの値を取得できるかどうかを知りたいだけですか?たとえば、以下の例のClassToTestを変更することはできません。実行時にローカルフィールドの値を取得する
例:
public class ClassToTest {
public void func() {
int number = 25;
}
}
Public class MyProgram {
public static void Main() {
ClassToTest instance = new ClassToTest();
instance.func();
// Can field "number" value be extracted here?
}
}
は、私が反射し、他のアセンブリに関連するものが、まだ運を見てきました。どんな提案も高く評価されます。
いいえ、それは不可能であり、そうする理由はありません。 'number'はクラスではなくスコープです。また、コンパイルできるコードを投稿する必要があります。あなたがそれを実行することができるかどうかを確認するためにそれを自分でテストしてください。値を必要とする場合は、メソッドから戻すか、クラス/インスタンススコープのプロパティを作成し、その値を設定します。 – Igor
私はそれを得ることができる最も単純な例を減らしました。もともと私が取り組んでいるプログラムは、これよりずっと大きくて複雑です。また、ClassToTestをリファクタリングすることもできません。 –
非常に簡単です。このメソッドは値を設定しますが、有効範囲外になると(つまり、メソッドの実行が終了すると)変数とその値がスタックからポップされます。その価値を得る方法はありません。また値を取得しようとしないでください、それはちょうど**非常に**悪いプログラミングの練習です。あなたはカプセル化を破るだろう。その値に興味がある場合は、それを知っているインスタンスに設定する方法を見つけるか、それを返すか、それを再計算する新しいメソッドを記述します。 – Igor