在日常生活中,相信大家都离不开手机,低头族啊!哈哈。。。 假如手机厂商生产了一款新手机,暂时还未定价,在C#1中我们该怎么做呢?
常见的解决方案:
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#3引入可空类型,使事情得到了极大的简化。
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 }
在我们日常的开发中,调用方法时对于特定参数总是会传递同样的值,而传统的解决方案是对方法的重载。 我们回到上一篇内容中讲到的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 }
备注:
浅谈C#的可空类型
C#可空类型
这篇就写到这里。下篇我们将继续学习《深入理解C#》的相关知识。谢谢!