学习《深入理解C#》—— 可空类型、可选参数和默…
2018-06-22 07:46:12来源:未知 阅读 ()
目录
- C#可空类型
- C# 可选参数和默认值
C# 可空类型
在日常生活中,相信大家都离不开手机,低头族啊!哈哈。。。 假如手机厂商生产了一款新手机,暂时还未定价,在C#1中我们该怎么做呢?
常见的解决方案:
- 围绕 decimal 创建一个引用类型包装器;
- 维护一个单独的 Boolean 标志,它表示价格是否已知;
- 使用一个“魔数”(magic value)(比如 decimal.MinValue )来表示未知价格。
1 public class Product 2 { 3 private string name; 4 private ProductPrice price; 5 6 public Product(string name, ProductPrice price) 7 { 8 this.name = name; 9 this.price = price; 10 } 11 } 12 public class ProductPrice 13 { 14 public decimal Price; 15 public bool HasPrice; 16 }
而在C#2引入可空类型,使事情得到了极大的简化。
1 public class Product 2 { 3 public string Name { get; set; } 4 public decimal? Price { get; set; } 5 public Product(string name, decimal? price ) 6 { 7 this.Name = name; 8 this.Price = price; 9 } 10 }
C# 可选参数和默认值
在我们日常的开发中,调用方法时对于特定参数总是会传递同样的值,而传统的解决方案是对方法的重载。 我们回到上一篇内容中讲到的Product类,假如我们的大多数产品不包含价格,而在C#4中引入了可选参数,来简化这类操作。
1 public class Product 2 { 3 public string Name { get; set; } 5 public decimal? Price { get; set; } 7 public Product(string name, decimal? price = null) 8 { 9 this.Name = name; 10 this.Price = price; 11 } 12 public static List<Product> GetSampleProducts() 13 { 14 List<Product> list = new List<Product>(); 15 list.Add(new Product("硬装芙蓉王")); 16 list.Add(new Product("精白沙", 9m)); 17 list.Add(new Product("软白沙", 5.5m)); 18 return list; 19 } 20 public override string ToString() 21 { 22 return string.Format("{0}:{1}", Name, Price); 23 } 24 }
备注:
- 声明的可选参数可指定一个常量值,不一定为null。 如上述代码中可将产品的价格默认为decimal? price = 1.2m等。
- 可选参数可以应用于任何类型的参数,但对于除字符串外的任意引用类型,只能使用null作为常量值。
- 当方法有可选参数并设定了默认值,调用此方法时可选参数可不传递参数,此时默认传递的是设定的默认值。
相关资料
浅谈C#的可空类型
C#可空类型
这篇就写到这里。下篇我们将继续学习《深入理解C#》的相关知识。谢谢!
标签:
版权申明:本站文章部分自网络,如有侵权,请联系:west999com@outlook.com
特别注意:本站所有转载文章言论不代表本站观点,本站所提供的摄影照片,插画,设计作品,如需使用,请与原作者联系,版权归原作者所有
- asp.net定点执行任务的方法 2020-03-18
- 用继承方法实现页面判断session的方法 2020-03-10
- asp.net基础学习之前端页面布局 2019-11-30
- ASP.NET连接 Access数据库的几种方法 2019-11-29
- asp.net基础学习:控件的使用方法 2019-11-19
IDC资讯: 主机资讯 注册资讯 托管资讯 vps资讯 网站建设
网站运营: 建站经验 策划盈利 搜索优化 网站推广 免费资源
网络编程: Asp.Net编程 Asp编程 Php编程 Xml编程 Access Mssql Mysql 其它
服务器技术: Web服务器 Ftp服务器 Mail服务器 Dns服务器 安全防护
软件技巧: 其它软件 Word Excel Powerpoint Ghost Vista QQ空间 QQ FlashGet 迅雷
网页制作: FrontPages Dreamweaver Javascript css photoshop fireworks Flash