默认值表达式生成类型的默认值。 默认值表达式在泛型类和泛型方法中非常有用。 使用泛型类和泛型方法时出现的一个问题是,如何在无法提前知道以下内容的情况下将默认值赋值给参数化类型 T

  • T 是引用类型还是值类型。
  • 如果 T 是值类型,它是数值还是用户定义的结构。

已知参数化类型 T 的变量 t,仅当 T 为引用类型时,语句 t = null 才有效。 赋值 t = 0 仅对数值类型有效,对结构无效。 解决方案是使用默认值表达式,该表达式对引用类型(类类型和接口类型)返回 null,对数值类型返回零。 对于用户定义的结构,返回初始化为零位模式的结构,该结构根据成员是值还是引用类型,为每个成员生成 0 或 null。 对于可为 NULL 的值类型,default 返回像任何结构一样初始化的System.Nullable<T>

default(T) 表达式不限于泛型类和泛型方法。 默认值表达式可用于任何托管类型

以上内容来自MSDN。

示例代码:
 
int iValue = default(int);
float fValue = default(float);
decimal dValue = default(decimal);
Console.Write("值类型测试:");
Console.WriteLine("{0},{1},{2}", iValue, fValue, dValue);

string strValue = default(string);
DateTime? dt = default(DateTime?);
User user = default(User);
Console.Write("引用类型测试:");
Console.WriteLine("{0},{1},{2}", (null == strValue), (null == user), (null == dt));
Console.WriteLine();

 
运行结果:

最新文章

  1. root与普通用户的切换
  2. 评价cnblogs.com的用户体验
  3. oracle 批量插入-支持序列自增
  4. [NOIP2012] 提高组 洛谷P1079 Vigen&#232;re 密码
  5. 11.外观模式(Facade Pattern)
  6. SQL数据库约束
  7. noi 2985 数字组合
  8. hdu------(1525)Euclid&#39;s Game(博弈决策树)
  9. sql访注入
  10. 30天轻松学习javaweb_http头信息实例
  11. TCP Keepalive HOWTO
  12. UVA - 10057 A mid-summer night&amp;#39;s dream.
  13. 大约Java有点感悟---开发商根本上感悟学习
  14. IdTCP的C++Builder2010示例(转)
  15. lesson - 10 课程笔记
  16. 2017 年的 人生 hard 模式终于结束了,2018年回归初心(二)
  17. Django models中关于blank与null的补充说明
  18. bzoj4802 欧拉函数(附Millar-Rabin和Pollard-Rho讲解)
  19. 第16月第6天 vs2005 lseek directdraw
  20. Mysql字段类型与合理选择

热门文章

  1. XE7 update1
  2. SpringMVC 学习笔记(处理器映射器的配置)
  3. Apache Hive 安装文档
  4. App登录状态维持
  5. 编程语言分类和Python解释器介绍
  6. spinnaker
  7. shell编程变量赋值
  8. Jquery的树插件jqxTreeGrid的使用小结(实现基本的增删查改操作)
  9. set 续3
  10. ireport related