谁能告诉我在 C# 和 vb 中声明时变量的默认值是什么?
5 回答
在 c# 中,您可以使用 default 关键字来确定默认值。
例如:
默认(布尔) 默认(整数) 默认(整数?)
你的意思是一个(方法)变量吗?或字段(在实例或类型上)?
对于方法级变量(至少在 C# 中)它是无关紧要的,因为“明确赋值”意味着您必须先给它一个值才能读取它。
字段默认为按位零状态:
- 对于表示 null 的引用类型(包括字符串)
- for
Nullable<T>
(int?
etc) 这意味着 null - 对于表示 0 的数字
- 对于表示 0 的枚举,即使没有定义 0 值枚举
- 对于意味着假的布尔值
- 对于 DateTime,这意味着与 MinValue 相同
- 对于其他结构,您必须检查他们的文档,但这将是一个(希望是明智的)“零/空”值
这可以在 MSDN 中找到:
Visual Basic .NET 定义了以下基本类型:
整数值类型 Byte(1 字节无符号整数)、Short(2 字节有符号整数)、Integer(4 字节有符号整数)和 Long(8 字节有符号整数)。这些类型分别映射到 System.Byte、System.Int16、System.Int32 和 System.Int64。整数类型的默认值等价于文字 0。
浮点值类型 Single(4 字节浮点)和 Double(8 字节浮点)。这些类型分别映射到 System.Single 和 System.Double。浮点类型的默认值等价于文字 0。
Decimal 类型(16 字节十进制值),映射到 System.Decimal。十进制的默认值相当于文字 0D。
布尔值类型,表示真值,通常是关系或逻辑运算的结果。文字是 System.Boolean 类型。Boolean 类型的默认值等价于文字 False。
Date 值类型,表示日期和/或时间并映射到 System.DateTime。Date 类型的默认值等价于文字 # 01/01/0001 12:00:00AM #。
Char 值类型,表示单个 Unicode 字符并映射到 System.Char。Char 类型的默认值等价于常量表达式 ChrW(0)。
String 引用类型,它表示一系列 Unicode 字符并映射到 System.String。String 类型的默认值为空引用。
C# 语言规范规定,对于值类型,默认值与默认构造函数分配的值相同,对于引用类型,默认值为 null:
所以值类型的默认构造函数值是:
对于所有简单类型,默认值是由全零位模式产生的值:
对于 sbyte、byte、short、ushort、int、uint、long 和 ulong,默认值为 0。
对于 char,默认值为 '\x0000'。对于浮点数,默认
值为 0.0f。对于双精度,默认值为 0.0d。对于十进制,默认值为 0.0m。对于 bool,默认值为 false。
对于 enum-typeE,默认值为 0。
对于结构类型,默认值是通过将所有值类型字段设置为其默认值并将所有引用类型字段设置为空而产生的值。
http://msdn.microsoft.com/en-us/library/aa691142(v=VS.71).aspx
字符串不是值类型。
取决于变量的类型。如果类型可以为空,那么它的默认值为空。可为 Null 的类型都将以 null 开头。
- 复杂类型 (String, StringBuilder) = null
- 数值类型(int、decimal、double、byte)= 0
- 布尔 = 假
- DateTime = DateTime.MinValue (01/01/0001 00:00:00)
您可以使用以下方法设置初始值:
字符串 s1 = "测试";
Dim s1 As String = "test"