C# defualt关键字默认值用法
2024-10-19 01:29:40
默认值表达式生成类型的默认值。 默认值表达式在泛型类和泛型方法中非常有用。 使用泛型类和泛型方法时出现的一个问题是,如何在无法提前知道以下内容的情况下将默认值赋值给参数化类型 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);
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();
运行结果:
最新文章
- root与普通用户的切换
- 评价cnblogs.com的用户体验
- oracle 批量插入-支持序列自增
- [NOIP2012] 提高组 洛谷P1079 Vigen&#232;re 密码
- 11.外观模式(Facade Pattern)
- SQL数据库约束
- noi 2985 数字组合
- hdu------(1525)Euclid&#39;s Game(博弈决策树)
- sql访注入
- 30天轻松学习javaweb_http头信息实例
- TCP Keepalive HOWTO
- UVA - 10057 A mid-summer night&;#39;s dream.
- 大约Java有点感悟---开发商根本上感悟学习
- IdTCP的C++Builder2010示例(转)
- lesson - 10 课程笔记
- 2017 年的 人生 hard 模式终于结束了,2018年回归初心(二)
- Django models中关于blank与null的补充说明
- bzoj4802 欧拉函数(附Millar-Rabin和Pollard-Rho讲解)
- 第16月第6天 vs2005 lseek directdraw
- Mysql字段类型与合理选择