C# tips ---关于可空类型
2007-09-06 00:48
162 查看
1) 在与1元或二元运算符一起使用时,如果其中一个操作数为null或两个均null,则结果为null。
如:
int? a = null;
int? b = a+3;
则b为null
2) 比较可空类型时,只要有一个操作数为null,结果就为false
如:
int? a = null;
int? b = 8;
(a>=b)将返回false
而正是因为null的可能性,所以不能随意比较一个可空类型和一个非可空类型。
3) 空接合运算符
空接合运算符”??”为处理可空类型和引用类型时表示Null值的可能性提供了一种快捷方式,或许我们不用总写if(XX!=null)。有点类似三元运算符”?:”,如果”??”前面一个数(第一个数必需为可空或引用类型)不是null,则表达式的值就为第一个操作数的值,如果第一个操作数为Null,表达式的值则为第二个表达式的值。
如:
int? a= null;
int defaut = 1010;
int b;
b=a??defaut;//此时b取defaut的值
a = 8;
b=a??defaut;//此时b取a的值
当然,这里第二个数应该是与第一个数类型相同或者能隐式转化为第一个数的。
PS:无法创建基于引用类型的可空类型,因为引用类型已支持 null 值。
如:
int? a = null;
int? b = a+3;
则b为null
2) 比较可空类型时,只要有一个操作数为null,结果就为false
如:
int? a = null;
int? b = 8;
(a>=b)将返回false
而正是因为null的可能性,所以不能随意比较一个可空类型和一个非可空类型。
3) 空接合运算符
空接合运算符”??”为处理可空类型和引用类型时表示Null值的可能性提供了一种快捷方式,或许我们不用总写if(XX!=null)。有点类似三元运算符”?:”,如果”??”前面一个数(第一个数必需为可空或引用类型)不是null,则表达式的值就为第一个操作数的值,如果第一个操作数为Null,表达式的值则为第二个表达式的值。
如:
int? a= null;
int defaut = 1010;
int b;
b=a??defaut;//此时b取defaut的值
a = 8;
b=a??defaut;//此时b取a的值
当然,这里第二个数应该是与第一个数类型相同或者能隐式转化为第一个数的。
PS:无法创建基于引用类型的可空类型,因为引用类型已支持 null 值。
相关文章推荐
- C#教程:关于匿名类型的特性
- 关于c#里的string 类型(转http://xianyun0216.blog.51cto.com/714887/167194)
- 关于C#间接继承的一些思考:如何修改继承函数的返回值类型
- 关于C#的dynamic类型,简单演示及说明
- 【转】关于C#值类型,引用类型,值传递,引用传递
- c#关于数据库自定义类型在存储过程中返回服务器端的问题
- [转帖]关于C#值类型,引用类型,值传递,引用传递
- 关于C#中泛型类型参数约束(where T : class)
- 关于C#编程中引用与值类型赋值的一些容易犯错的地方
- 关于C#string的类型
- 跟小静读CLR via C#(14)-可空值类型,关于?和??的故事
- C# String Tips (C#String 类型的相关用法 收集)
- C# 关于类型转换 面试题
- DEMO[C#]TypeChange 关于类型转换的一个DEMO
- 关于C#中的DateTime类型的细节问题
- 关于C#数据类型的一点认识
- c#中关于泛类型(泛型)、强类型和弱…
- C#中关于String类型的常用方法
- 关于.NET(C#)中字符型(Char)与数字类型的转换, CLR via c# 读书笔记
- c#中关于泛类型(泛型)、强类型和弱类型