【第一章】C#的进化史——表示产品的未知价格
2012-03-07 21:12
148 查看
问题:当一件产品尚未面世,即在某些情况下,我们不知道他的价格。
现在,我们定义的价格变量为decimal类型,如果此类型是引用类型的话,我们只需要使用NULL来表示未知的价格。
但是,decimal为值类型,问题多少有些复杂。
此种情况在C#1.0的解决方法,有三种:
1、围绕decimal创建一个引用类型包装器。【这个如何创建?】
2、维护一个单独的Boolean标识,它表示价格是否已知;
3、使用一个“魔数”(magic value)(比如decimal.MinValue)来表示未知的价格。
很明显,3种方案都不是很好。
在C#2.0,3.0中有一种很好的方法来解决这个问题:
即属性声明改为如下即可:
将构造函数的参数也改为decimal? 这样一来,就可以将null值作为阐述传递进来,或者在类中直接将price赋值为null。
即对值类型声明时,附加一个? 即可将值类型变为可空类型。
现在,我们定义的价格变量为decimal类型,如果此类型是引用类型的话,我们只需要使用NULL来表示未知的价格。
但是,decimal为值类型,问题多少有些复杂。
此种情况在C#1.0的解决方法,有三种:
1、围绕decimal创建一个引用类型包装器。【这个如何创建?】
2、维护一个单独的Boolean标识,它表示价格是否已知;
3、使用一个“魔数”(magic value)(比如decimal.MinValue)来表示未知的价格。
很明显,3种方案都不是很好。
在C#2.0,3.0中有一种很好的方法来解决这个问题:
即属性声明改为如下即可:
decimal? price; public decimal? Price { get{return price;} private set{price=value;} }
将构造函数的参数也改为decimal? 这样一来,就可以将null值作为阐述传递进来,或者在类中直接将price赋值为null。
即对值类型声明时,附加一个? 即可将值类型变为可空类型。
相关文章推荐
- 深入理解 c# 第一章 c#3 显示未知价格的产品
- 【第一章】C#的进化史——C#1.0,2.0,3.0区别比较(一)
- 深入理解 c# 第一章 使用异步函数在windows form 中显示产品 c#5
- 第一章:C#开发的进化史
- 【第一章】C#的进化史——C#1.0,2.0,3.0区别比较(三)——查询集合
- 【第一章】C#的进化史——C#1.0,2.0,3.0区别比较(二)——C#2.0,3.0 简化排序的特性
- C# in depth (第一章 C#开发的进化史)
- 如何提高产品价格
- c#与matlab混合编程时出现应用程序发生异常 未知的软件异常(0xe0434f4d),位置为 0x7c812a7b.
- [翻译]C#数据结构与算法 – 第一章(完)
- 走进,C#,消化第一章--->C#概述
- Magento获取当前购物车产品总数量和总价格
- C++ Java C#的比较-成员归属权的表示
- magento把产品价格隐藏起来,只让注册的会员看到产品价格
- magento把产品价格隐藏起来,只让注册的会员看到产品价格
- 常用控件产品官方文档/手册/API列表 c#控件文档API列表 asp.net控件产品技术文档中文版
- 《产品经理手册》读书笔记--第一章《产品经理的战略规划框架》1.2
- 微软公司 BizTalk Server 2006 R2 产品价格与许可常见问题
- C#与VB.NET服务器端控件的基本表示方法(学习之四)
- 编写高质量代码改善C#程序的157个建议——建议136:优先使用后缀表示已有类型的新版本