A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 刘逍遥 中级黑马   /  2012-6-23 21:49  /  2020 人查看  /  4 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

值类型为什么不可以为null, 值类型和引用类型,在堆栈分配上有差别,还有什么差别呢?

评分

参与人数 1技术分 +1 收起 理由
郑文 + 1

查看全部评分

4 个回复

倒序浏览
值类型做全局变量时,如果不赋值,则默认一个特定值,比如,int默认是0,bool默认是false ;
引用类型做全局变量时,如果不赋值,则默认为NULL,既不指向任何对象。
不同:
值类型可以直接修改其内容,而引用类型则需要重新创建一个对象,重指向它。
值类型不可以被继承,而作为对象的引用类型则可以被继承。

评分

参与人数 1技术分 +1 收起 理由
宋天琪 + 1

查看全部评分

回复 使用道具 举报
值类型可以赋值为0,但不能赋值为null,因为null表示空,即没有值,这违反了我们定义变量的原则,因为任何变量在使用前,都要赋值,所以我们可以把值类型赋值为0,但不能设置为null。

评分

参与人数 1技术分 +1 收起 理由
宋天琪 + 1

查看全部评分

回复 使用道具 举报
c#的可空类型。
按照规则,null用来建立一个空的对象引用,所以值类型永远不可以被赋值为null。而引用类型可被赋值为null。
为了让值类型也可赋值为null,可采用以下方法:
bool? a=null;编译通过,即在数据类型后加“?”,这种做法只对值类型有效。?实际上是System.Nullable的简写。
可空类型的好处在于,数据库的字段有可能为null,若为值类型增加null值,可赋值为null,通过判断是否为null来判断。
还有其中要注意的一点是:??。??的用法如下:int? mydata=dr.GetData() ?? 100;意义为当返回值为null时,赋值为100。

评分

参与人数 1技术分 +1 收起 理由
宋天琪 + 1

查看全部评分

回复 使用道具 举报
值类型不可能为空或null  因为它必定有一个值  -65535到65535 就算是0  也不是空或null
只有字符  字符串才有可能是空或null

评分

参与人数 1技术分 +1 收起 理由
宋天琪 + 1

查看全部评分

回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马