2

このコードを検討してください:

1)public static class MyClass
2){
3)    public static DateTime MyMethod(DateTime dt)
4)    {
5)         DateTime temp = new DateTime();
6)         temp = dt.AddDays(1);
7)         return temp;
8)    }
9)}

temp変数には、への呼び出しごとにインスタンスがありますMyMethodか? または、静的クラス内の静的メソッドにあるためtemp、メモリに割り当てられる変数のインスタンスは1つだけですか?

ありがとう

4

4 に答える 4

7

tempは静的変数でもインスタンス変数でもなく、ローカル変数です。変数が宣言されているメソッドが静的であるかどうかはまったく問題ではありません。変数のスコープは、その宣言のポイントで始まり、宣言されているスコープの閉じ中括弧}で終わります。通過する各実行スレッドは、変数のスコープ外のどこにも見えないMyMethod独自の のコピーを取得します。temp

于 2012-06-21T20:13:57.913 に答える
4

一時変数には、MyMethod への呼び出しごとにインスタンスがありますか?

「各呼び出しMyMethodで個別のtemp変数を取得しますか?」という意味であれば、答えはイエスです。

それが静的クラスの静的メソッドであるという事実は無関係です。これはローカル変数であるため、呼び出しごとに「新しい」ローカル変数を取得します。

于 2012-06-21T20:13:59.467 に答える
0

temp呼び出しごとに 1 つのインスタンスがあります。

ところで、C++ のように静的メソッドで静的ローカル変数を定義する可能性がありません。

于 2012-06-21T20:14:20.223 に答える
0

一時変数は、静的メソッドであっても、静的として宣言する必要があります。そうしないと、そのインスタンスでローカルに作成され、メソッド呼び出しが終了すると吹き飛ばされます。

于 2012-06-21T20:15:28.720 に答える