c# 初始化器的理解
使用初始化器(Initializers)可以减少实例化类的工作量。例如,假设你拥有如代码清单18-2(C#)或代码清单 18-3中的类(VB.NET)。
代码清单 18-2 LanguageChanges\App_Code\Product.cs
public class Product { public int Id { get; set; } public string Name { get; set; } public decimal Price { get; set; } }代码清单 18-3 LanguageChanges\App_Code\Product.vb
Public Class Product Id() _Id (ByVal value As Integer) _Id = value _Name Name() _Name (ByVal value As String) _Name = value _Price Price() _Price (ByVal value As Decimal) _Price = valueProduct类包含3个公共属性(由于C#有自动属性的优势,因此C#示例采用自动属性进行定义,而VB.NET示例采用普通方式进行定义)。
现在,你需要创建一个Product类的实例,在.NET Framework 2.0中,采用以下方式(C#):
Product product1 = new Product(); product1.Id = 1; product1.Name = “Laptop Computer”; product1.Price = 800.00m;VB.NET采用以下方式:
Dim product1 As New Product() product1.Id = 1 product1.Name = “Laptop Computer” product1.Price = 800.0注意,初始化一个简单的Product类使用了4行代码,这太浪费了。利用初始化器,这些工作可以用一行代码完成。用C#使用初始化器的代码如下:
Product product2 = new Product {Id=1, Name=”Laptop Computer”, Price=800.00m};
用VB.NET使用初始化器的代码如下:
Dim product2 As New Product() With {.Id = 1, .Name = “Laptop Computer”,.Price = 800.0}
在.NET Framework 2.0中,你可以声明Product类的构造函数,包含Id、Name和Price作为参数。但由于还需要在构造函数中将参数值赋给属性,因此导致了代码 的膨胀。使用初始化器,你显然可以做类似的工作。并且,你还因此得到了好处:更加小巧的类,以及声明该类时使用的最少的代码。
c# 初始化器的理解