web-dev-qa-db-ja.com

C#およびVBでの宣言時の変数のデフォルト値?

C#とvbでの宣言時の変数のデフォルト値は何か教えてもらえますか?

21
Khan

C#では、defaultキーワードを使用してデフォルト値を決定できます。

例えば:

 default(bool)
 default(int)
 default(int?)
48
Chris

(メソッド)変数ですか?またはフィールド(インスタンスまたはタイプ)?

メソッドレベルの変数(少なくともC#の場合)は関係ありません。「明確な割り当て」は、mustが値を指定してから、それを読んで。

フィールドのデフォルトはビット単位のゼロ状態です。

  • nullを意味する参照型(文字列を含む)の場合
  • ために Nullable<T>int?など)これはnullを意味します
  • 0を意味する数値の場合
  • 0を意味する列挙型の場合値の列挙型が定義されていない場合でも
  • 偽を意味するブールの場合
  • dateTimeの場合、これはMinValueと同じことを意味します
  • 他の構造体については、ドキュメントを確認する必要がありますが、それは(うまくいけば)「ゼロ/空」の値になります
24
Marc Gravell

これはMSDNにあります:

Visual Basic .NETは、次のプリミティブ型を定義します。

整数値のタイプは、バイト(1バイトの符号なし整数)、ショート(2バイトの符号付き整数)、整数(4バイトの符号付き整数)、およびロング(8バイトの符号付き整数)です。これらの型は、それぞれSystem.Byte、System.Int16、System.Int32、およびSystem.Int64にマップされます。 整数型のデフォルト値は、リテラル0と同等です

浮動小数点値のタイプは、Single(4バイト浮動小数点)およびDouble(8バイト浮動小数点)です。これらの型は、それぞれSystem.SingleおよびSystem.Doubleにマップされます。 浮動小数点型のデフォルト値はリテラル0と同等です

System.DecimalにマップするDecimalタイプ(16バイトの10進値)。 10進数のデフォルト値は、リテラル0Dと同等です。

真理値を表すブール値タイプ。通常は、関係演算または論理演算の結果です。リテラルのタイプはSystem.Booleanです。 ブール型のデフォルト値は、リテラルFalseと同等です

日付や時刻を表し、System.DateTimeにマップする日付値タイプ。 日付タイプのデフォルト値は、リテラル#01/01/0001 12:00:00 AM#。と同等です。

単一のUnicode文字を表し、System.CharにマップされるChar値タイプ。 Char型のデフォルト値は、定数式ChrW(0)と同等です。

Unicode文字のシーケンスを表し、System.StringにマップされるString参照型。 String型のデフォルト値はnull参照です

http://msdn.Microsoft.com/en-us/library/aa711900.aspx

14
Billy

C#言語仕様では、値タイプのデフォルト値は、デフォルトコンストラクターによって割り当てられた値と同じであり、参照タイプnullです:

したがって、値タイプのデフォルトのコンストラクタ値は次のとおりです。

すべての単純型の場合、デフォルト値はすべてゼロのビットパターンによって生成される値です。

  • Sbyte、byte、short、ushort、int、uint、long、およびulongのデフォルト値は0です。

  • Charの場合、デフォルト値は '\ x0000'です。 floatの場合、デフォルト
    値は0.0fです。

  • Doubleの場合、デフォルト値は0.0dです。 10進数の場合、デフォルト値は0.0mです。 boolの場合、デフォルト値はfalseです。

  • Enum-typeEの場合、デフォルト値は0です。

  • 構造体型の場合、デフォルト値は、すべての値タイプフィールドをデフォルト値に設定し、すべての参照タイプフィールドをnullに設定することによって生成される値です。

http://msdn.Microsoft.com/en-us/library/aa691142(v = VS.71).aspx

文字列は値のタイプではありません。

5
Four

変数のタイプによって異なります。タイプがnullになる可能性がある場合、そのデフォルト値はnullになります。 null許容型はすべてnullから始まります。

  • 複合型(String、StringBuilder)= null
  • 数値タイプ(int、decimal、double、byte)= 0
  • ブール= false
  • DateTime = DateTime.MinValue(01/01/0001 00:00:00)

以下を使用して初期値を設定できます。

文字列s1 = "テスト";

Dim s1 As String = "test"

4
Neil Bostrom