12

例として、意味のない拡張メソッドを次に示します。

public static class MyExtensions
{
    public static int MyExtensionMethod(this MyType e)
    {
        int x = 1;
        x = 2;

        return x
    }
}

実行のスレッドが次の行まで完了したとします。

x = 2; 

次に、プロセッサはコンテキストスイッチを実行し、別のスレッドが同じメソッドに入り、次の行を完成させます。

int x = 1;

最初のスレッドによって作成および割り当てられた変数「x」が、2番目のスレッドによって作成および割り当てられた変数「x」とは別のスタックにあると仮定して正しいですか?つまり、このメソッドは再入可能ですか?

4

3 に答える 3

14

はい、各スレッドは独自のローカル変数を取得します。この関数は、複数のスレッドによって同時に呼び出された場合でも、常に2を返します。

于 2010-06-27T23:52:21.540 に答える
2

はい、それは正しい評価です。 xはメソッドローカル変数であり、の呼び出し間で共有されませんMyExtensionMethod

于 2010-06-27T23:53:24.137 に答える
0

簡単に言えば、そうです。静的メソッドは、オブジェクトなしでメソッドを呼び出すことができることを意味するだけです。メソッド内のローカル変数はまだローカルです。

于 2010-06-27T23:53:28.697 に答える