9

ちょっと興味があるんだけど。

もしあなたが行くなら:

string myString;

その値はnullです。

しかし、あなたが行くなら:

int myInt;

C#でのこの変数の値は何ですか?

ありがとう

デビッド

4

6 に答える 6

27

まず、これはローカル変数ではなくフィールドにのみ適用されることに注意してください。少なくともC#内では、割り当てられるまでフィールドを読み取ることはできません。実際、適切なフラグが設定されている場合、CLRはスタックフレームを0に初期化します。これはデフォルトであると私は信じています。しかし、それが観察されることはめったにありません-あなたはいくつかの粗雑なハックを経験しなければなりません。

のデフォルト値intは0です。どのタイプの場合も、基本的にはゼロでいっぱいのビットパターンで表される値です。値型の場合、これはパラメーターなしのコンストラクターを呼び出すのと同じであり、参照型の場合、これはnullです。

基本的に、CLRはメモリをゼロで消去します。

default(SomeType)これは、任意のタイプに対して指定される値でもあります。

于 2010-05-28T13:23:32.203 に答える
5

intのデフォルトは0です

于 2010-05-28T13:20:47.927 に答える
5

intのデフォルト値は0です。

タイプごとのデフォルト値の完全なリストについては、http://msdn.microsoft.com/en-us/library/83fhsxwc.aspxを参照してください。

于 2010-05-28T13:21:02.093 に答える
2

C#の値タイプのデフォルト値の表を次に示します。http: //msdn.microsoft.com/en-us/library/83fhsxwc.aspx 参照タイプのデフォルト値は通常nullです。

于 2010-05-28T13:23:06.603 に答える
2

文字列は参照型です。Intは値型です。参照型は、ヒープに向けられたスタック上の単なるポインターであり、値が含まれる場合と含まれない場合があります。値型はスタック上の値ですが、常に何かに設定する必要があります。

于 2010-05-28T13:23:51.773 に答える
1

タイプの単位化された変数の値Tは常にdefault(T)です。すべての参照型の場合、これは null です。値の型については、@Blorgbeard が投稿したリンクを参照してください (または、それを確認するコードを記述してください)。

于 2010-05-28T13:24:57.660 に答える