default & nullabel in .net

首先说说值类型和引用类型(有时也说类类型)即 value type和referance type。基本类型和结构体属于值类型,定义的类属于引用类型。值类型的默认值是0,引用类型的默认值是null(如果把null看作0,就可以说所以后的默认类型都是0了)。结构体的默认值由各成员的默认值构成。使用default关键字可以获得各种类型的默认值,如default(int),default(ArrayList),default(DateTime)。另外值类型必须保存一个值,而不能像引用类型那样使用null指示其没有保存任何数据。


再说说nullable,官方的名字是System.Nullable<T>是一个泛型,简写成T?。(好久没碰模板和泛型了,简单来说就是根据一种或几种类型构造出一种类型的机制)。Nullable<T>将值类型T转换成另外一种可以等于null的类型,用以指示没有保存任何值。泛型构造了一种新的数据结构,即一个类,用以满足值类型T的不足。

另外要提一下Nullabel<T>的隐式类型转换操作符 public static implicit operator T?(T value),即它可以将T转换成T? 该操作符可以接受null作为参数构造出一个对象。这解释了int? a=null后却可以访问a.HasValued,同时a==null的结果为true。当然也可以使用int? a=1做隐式转换,构造一个有值的对象。


最后说一下struct,struct在.net属于值类型.他有一个默认的构造函数,而且不能重写默认构造函数,其他的构造函数必须全部显式初始化各个成员。另外它不能从Object类继承,它继承自Struct,自成体系。

在c++里面,他已被看成是一个类了,除了默认访问权限不同其他都相同了。在java里已经没有他的身影了。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值