1

重複の可能性:
変数またはパラメーターの名前を取得

私はこの機能を持っています。

public void AddVariable( String str)
{
    Response.Write(str); // will write the value of str
}

ただし、関数に渡される文字列変数の名前を記述する必要があります。

例えば:

String temp = "test Variable";
AddVariable(temp);

ここでは、 valueの代わりに、関数内の変数の名前を取得する必要があります。

つまり、「testVariable」の代わりに「temp」を関数内に取得する必要あります。

それは可能ですか?

4

2 に答える 2

4

関数内の変数の名前( "str")を取得することはできますが、2番目のパラメーターとして渡さない限り、関数に渡された変数の名前を取得することはできません。

のようなリテラルが渡された場合、変数が存在しなかった可能性があるため、関数に渡された変数の名前を取得することは意味がありませんAddVariable("test variable")

于 2012-12-28T05:43:59.043 に答える
3

パラメータ名(リフレクションから可能)は必要ありませんが、パラメータとして渡された変数名が必要です。AFAIK、すべての実用的な目的のために、これは関数内のコードでは不可能です。

一方、app-domainにロードされたすべてのアセンブリのコード分析を実行し、メソッドへのすべての呼び出しを見つけてから、スタックウォークを実行して可能な呼び出しを決定し、変数を釘付けにすることができます。呼び出し元のメソッドの名前(呼び出し元のメソッドで多くの呼び出しがあり、変数名を推測するのが難しく、ILオフセットなどに依存する必要がある場合)が、複雑すぎます。

おそらく、あなたはそのような要件の理由を述べることができます、いくつかの代替案があるかもしれません。たとえば、トラブルシューティングなどに使用できるメソッドコード内のスタックトレースを取得してログに記録できます。

于 2012-12-28T05:48:08.940 に答える