現在読んでいる C# に関する本の文章について疑問に思っています。この文は次のとおりです。
「すべて 0 に初期化される値型」。
私はネイティブスピーカーではないので、おそらく理解できません。
私の言語の理解では、変数が初期化されるときに複数の値を持つことを意味しますか? これは私には本当に意味がありません。これが何を意味するのか理解するのを手伝ってもらえますか?
現在読んでいる C# に関する本の文章について疑問に思っています。この文は次のとおりです。
「すべて 0 に初期化される値型」。
私はネイティブスピーカーではないので、おそらく理解できません。
私の言語の理解では、変数が初期化されるときに複数の値を持つことを意味しますか? これは私には本当に意味がありません。これが何を意味するのか理解するのを手伝ってもらえますか?
次の値のタイプを検討してください。
public struct Point
{
public int X;
public int Y;
}
ここで「すべて 0」とは、X = 0 および Y = 0 を意味します。
更新:この例がstructの MSDN ドキュメントで使用されていることを発見しました。彼らはコンストラクターをスローします。
文が正しく定式化されていないと思います。著者は、値型が宣言されたときにデフォルト値に初期化されることを意味するか、または書くべきだったと思います。整数 (値型) の場合、デフォルト値は 0 です。
例えば
public struct Test
{
public int a;
public Decimal b;
public DateTime c;
public void Output(){
Console.WriteLine ("a: " + a);
Console.WriteLine ("b: " + b);
Console.WriteLine ("c: " + c);
}
}
var t = new Test();
t.Output();
表示されます:
a: 0
b: 0
c: 01/01/0001 0:00:00
おそらく、、、、 、、などの値型のデフォルト値についてです。byte
double
int
sbyte
short
uint
ushort
ulong
たとえば、これを言うとき。
int i = new int();
i
に初期化0.
小切手Default Values Table (C# Reference)
また、次のような構造体型で値型を使用することもできます。
public struct MyStruct
{
public int X;
public short Y;
public double Z;
}
X
、 、Y
の値Z
は0
です。
ほとんどの場合、作成者は、値型インスタンス内に存在するすべての型のデフォルト値を意味します (当然、型ごとに異なる場合があります)。
これを実現するには、次のようにします。
MyStruct struc = default(MyStruct);
値型の変数は、メモリ内で特定のバイト数を占有します。この型がゼロに初期化されるというステートメントは、変数の初期化時にこれらのバイトのすべてが値0に設定されることを意味します。
これは、この質問で概説されているように、すべてではないにしても多くの値の型 (つまり、プリミティブな数値型、構造体など) に当てはまるようです。