任何人都可以告诉我在C#和vb中声明时变量的默认值是什么?
在c#中,您可以使用default关键字来确定默认值.
例如:
default(bool) default(int) default(int?)
你的意思是(方法)变量?或字段(在实例或类型上)?
对于方法级变量(至少在C#中),它是无关紧要的,因为"明确赋值"意味着您必须先给它一个值才能读取它.
字段默认为按位零状态:
对于引用类型(包括字符串),表示null
for Nullable
(int?
etc)表示null
对于数字,这意味着0
对于枚举,即使没有定义0值枚举,也意味着0
对于bools而言,这意味着虚假
对于DateTime,这意味着与MinValue相同
对于其他结构,你必须检查他们的文档,但它将是一个(希望是明智的)"零/空"值
这可以在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.
Decimal类型(16字节十进制值),映射到System.Decimal.decimal的默认值相当于文字0D.
布尔值类型,表示真值,通常是关系或逻辑运算的结果.文字是System.Boolean类型.Boolean类型的默认值等效于文字False.
Date值类型,表示日期和/或时间并映射到System.DateTime.Date类型的默认值相当于文字#01/01/0001 12:00:00 AM#.
Char值类型,表示单个Unicode字符并映射到System.Char.Char类型的默认值等效于常量表达式ChrW(0).
String引用类型,表示Unicode字符序列并映射到System.String.String类型的默认值是空引用.
http://msdn.microsoft.com/en-us/library/aa711900.aspx
C#语言规范声明,对于值类型,默认值与默认构造函数指定的默认值相同,对于引用类型,它为null:
所以值类型的默认构造函数值是:
对于所有简单类型,默认值是由全零的位模式生成的值:
对于sbyte,byte,short,ushort,int,uint,long和ulong,默认值为0.
对于char,默认值为'\ x0000'.对于float,默认
值为0.0f.对于double,默认值为0.0d.对于十进制,默认值为0.0m.对于bool,默认值为false.
对于enum-typeE,默认值为0.
对于struct-type,默认值是通过将所有值类型字段设置为其默认值并将所有引用类型字段设置为null而生成的值.
http://msdn.microsoft.com/en-us/library/aa691142(v=VS.71).aspx
该字符串不是值类型.