cuclife.com > IT > C# > 0

c# 初始化器的理解

网络整理 - 06-27

使用初始化器(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 = value

Product类包含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# 初始化器的理解