在C#和VB中声明时变量的默认值?

时间:2009-02-26 10:11:48

标签: variables default declaration

有人能告诉我在C#和vb中声明变量的默认值是什么

5 个答案:

答案 0 :(得分:44)

在c#中,您可以使用default关键字来确定默认值。

例如:

default(bool)
default(int)
default(int?)

答案 1 :(得分:24)

你的意思是(方法)变量吗?或字段(在实例或类型上)?

对于方法级变量(至少在C#中),它是无关紧要的,因为“明确赋值”意味着你必须给它一个值才能阅读它。

字段默认为按位零状态:

  • 用于引用类型(包括字符串),表示null
  • 表示Nullable<T>int?等),表示空
  • 表示0
  • 的数字
  • 对于枚举,即使没有定义0值枚举<0> <0>
  • for bools表示错误
  • 表示DateTime,表示与MinValue相同
  • 对于其他结构,你必须检查他们的文档,但它将是一个(希望是明智的)“零/空”值

答案 2 :(得分:13)

这可以在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。

十进制类型(16字节十进制值),映射到System.Decimal。 decimal的默认值相当于文字0D。

布尔值类型,表示真值,通常是关系或逻辑运算的结果。文字是System.Boolean类型。 布尔类型的默认值相当于文字False。

日期值类型,表示日期和/或时间并映射到System.DateTime。 日期类型的默认值相当于文字#01/01/0001 00:00 AM AM#。

Char值类型,表示单个Unicode字符并映射到System.Char。 Char类型的默认值等效于常量表达式ChrW(0)。

String引用类型,表示Unicode字符序列并映射到System.String。 String类型的默认值是空引用。

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

答案 3 :(得分:5)

C#语言规范指出,对于值类型,默认值与默认构造函数指定的默认值相同,对于引用类型,它为null:

因此值类型默认构造函数值为:

  

对于所有简单类型,默认值   value是一点产生的值   全零的模式:

     
      
  • 对于sbyte,byte,short,ushort,int,uint,long和ulong,   默认值为0.

  •   
  • 对于char,默认值为'\ x0000'。对于浮动,默认为
      值为0.0f。

  •   
  • 对于double,默认值为   0.0D。对于十进制,默认值为   0.0米。对于bool,默认值为false。

  •   
  • 对于枚举类型E,默认值为0.

  •   
  • 对于struct-type,默认值是由其生成的值   将所有值类型字段设置为   他们的默认值和所有   引用类型字段为null。

  •   

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

字符串不是值类型。

答案 4 :(得分:3)

取决于变量的类型。如果类型可以为null,则它的默认值将为null。可空类型都将从null开始。

  • 复杂类型(String,StringBuilder)= null
  • 数字类型(int,decimal,double,byte)= 0
  • 布尔值= false
  • DateTime = DateTime.MinValue(01/01/0001 00:00:00)

您可以使用以下方式设置初始值:

  

string s1 =“test”;

     

Dim s1 As String =“test”