目录

C# 可空类型

在日常生活中,相信大家都离不开手机,低头族啊!哈哈。。。 假如手机厂商生产了一款新手机,暂时还未定价,在C#1中我们该怎么做呢?

常见的解决方案:

  1. 围绕 decimal 创建一个引用类型包装器;
  2. 维护一个单独的 Boolean 标志,它表示价格是否已知;
  3. 使用一个“魔数”(magic value)(比如 decimal.MinValue )来表示未知价格。
   public class Product
{
private string name;
private ProductPrice price; public Product(string name, ProductPrice price)
{
this.name = name;
this.price = price;
}
}
public class ProductPrice
{
public decimal Price;
public bool HasPrice;
}

而在C#2引入可空类型,使事情得到了极大的简化。

 public class Product
{
public string Name { get; set; }
public decimal? Price { get; set; }
public Product(string name, decimal? price )
{
this.Name = name;
this.Price = price;
}
}

C# 可选参数和默认值

在我们日常的开发中,调用方法时对于特定参数总是会传递同样的值,而传统的解决方案是对方法的重载。  我们回到上一篇内容中讲到的Product类,假如我们的大多数产品不包含价格,而在C#4中引入了可选参数,来简化这类操作。

 public class Product
{
public string Name { get; set; }
public decimal? Price { get; set; }
public Product(string name, decimal? price = null)
{
this.Name = name;
this.Price = price;
}
public static List<Product> GetSampleProducts()
{
List<Product> list = new List<Product>();
list.Add(new Product("硬装芙蓉王"));
list.Add(new Product("精白沙", 9m));
list.Add(new Product("软白沙", 5.5m));
return list;
}
public override string ToString()
{
return string.Format("{0}:{1}", Name, Price);
}
}

备注:

  1. 声明的可选参数可指定一个常量值,不一定为null。 如上述代码中可将产品的价格默认为decimal? price = 1.2m等。
  2. 可选参数可以应用于任何类型的参数,但对于除字符串外的任意引用类型,只能使用null作为常量值。
  3. 当方法有可选参数并设定了默认值,调用此方法时可选参数可不传递参数,此时默认传递的是设定的默认值。

相关资料

浅谈C#的可空类型

C#可空类型

这篇就写到这里。下篇我们将继续学习《深入理解C#》的相关知识。谢谢!

学习《深入理解C#》—— 可空类型、可选参数和默认值 (第一章1.3)的更多相关文章

  1. C++入门经典-例9.5-为具体类型的参数提供默认值

    1:默认模板参数是指类模板中由默认的数据类型作为参数的参数,在模板定义时,还可以为默认的数据类型声明,变量,并为变量赋值.代码如下: // 9.5.cpp : 定义控制台应用程序的入口点. #incl ...

  2. 在LoadRunner中从数组类型的参数随机取值的方法

    在LoadRunner中从数组类型的参数随机取值的方法 使用web_reg_save_param做关联后,有时候会有多个匹配值. 为了模仿用户行为随机取一个值为后续transcation所用,可以使用 ...

  3. 【C#】妈妈再也不用担心自定义控件如何给特殊类型的属性添加默认值了,附自定义GroupBox一枚

    ------------------更新:201411190903------------------ 经过思考和实践,发现套路中的第1条是不必要的,就是完全可以不用定义一个名为Default+属性名 ...

  4. 自定义控件如何给特殊类型的属性添加默认值 z

    定义控件如何给特殊类型的属性添加默认值了,附自定义GroupBox一枚 标题有点那啥,但确实能表达我掌握此法后的心情. 写自定义控件时往往会有一个需求,就是给属性指定一个默认值(就是可以在VS中右键该 ...

  5. MySql折腾小记二:text/blog类型不允许设置默认值,不允许存在两个CURRENT_TIMESTAMP

    From: http://www.cnblogs.com/cyq1162/archive/2011/05/17/2049055.html 在 CYQ.Data 数据框架的反向工程中,遇到MySQL的问 ...

  6. select 的字段为空,给他显示默认值

    select 的字段为空,给他显示默认值: 解决办法一: select id,name,(case when level is null then 0 else level end) as a fro ...

  7. Java 创建数组的方式, 以及各种类型数组元素的默认值

    ①创建数组的方式3种 ①第1种方法 public class MyTest { public static void main(String[] args){ //method 1 int[] arr ...

  8. swagger 接口文档,控制器 和 object类型的参数与返回值 的 注释不显示问题

    一.控制器的注释不显示:是因为配置swagger的时候没有将includeControllerXmlComments参数配置为true,因为其默认值为false 二.object 类型的参数和返回值 ...

  9. 自定义控件如何给特殊类型的属性添加默认值 z(转)

    自定义控件如何给特殊类型的属性添加默认值 z 定义控件如何给特殊类型的属性添加默认值了,附自定义GroupBox一枚 标题有点那啥,但确实能表达我掌握此法后的心情. 写自定义控件时往往会有一个需求,就 ...

随机推荐

  1. 【LeetCode】89. Gray Code (2 solutions)

    Gray Code The gray code is a binary numeral system where two successive values differ in only one bi ...

  2. powerdesigner 画PDM

    一.PDM概述 PDM(物理数据模型-Physical Data Modal),通俗地理解,就是在PowerDesigner中以图形化的方式展示和设计数据库. PDM中涉及到的基本概念包括: 表: 列 ...

  3. 剑指offer代码 vs2013执行

    方法: 代码文件夹名称为:CodingInterviewChinese2-master 1. 用vs2013加载解决方案 .sln文件 2. 一个解决方案下面有多个项目,通过右键解决方案->属性 ...

  4. Windows下搭建HTK

    转自:http://blog.csdn.net/yanli0823/article/details/8186382 亲测有效,环境: windows 8.1 perl版本: HTK版本:Hidden ...

  5. php图片采集后按原路径保存图片

    php图片采集后按原路径保存图片. 代码: <?php $domain ='http://www.jbxue.com'; $url = '/newskin/images/v4/logo.jpg' ...

  6. C#获取局域网MAC地址

    效果: 说明:获取本局域网的MAC地址(非本机的MAC地址) 代码:   /// <summary>         /// 获取网卡物理地址         /// </summa ...

  7. 进程控制函数(2)-setpgid() 修改当前进程的进程组ID

    定义:int setpgid(pid_t pid,pid_t pgid); 表头文件:#include<unistd.h> 说明:setpgid()将参数pid 指定进程所属的组识别码设为 ...

  8. Nginx - Windows下Nginx初入门,附CentOS下Nginx的安装

    公司刚使用nginx,预先学习下.鉴于机器没有Linux环境,在Windows熟悉下. 下载 目前(2015-07-11),nginx的稳定版本是1.8.0,在官网下载先,windows版的nginx ...

  9. Oracle 11g安装图文攻略

    一.Oracle 下载 注意Oracle分成两个文件,下载完后,将两个文件解压到同一目录下即可. 路径名称中,最好不要出现中文,也不要出现空格等不规则字符. 官方下地址: http://www.ora ...

  10. 开启Visual Studio 2013时,出现Microsoft.VisualStudio.Web.PasteJson.JsonPackage无法载入的可能解決方案

    1.先下载:http://www.jb51.net/dll/Microsoft.VisualStudio.Web.PasteJson.dll.html Microsoft.VisualStudio.W ...