C#3.0之匿名类型

C#3.0允许我们在局部声明匿名类,这样我们可以简单的存储一些数据。

看一下例子:

 

var p1  =   new   { Name = "Lawnmower", Price = 495.00 }
var p2 
=   new   { Name = "Shovel", Price = 26.95 } ;
p1 
=  p2;

// p1,p2为匿名类,可以使用new创建一个匿名类的对象

匿名类直接继承自System.Object,我们用ILDasm反汇编上面生成的程序集,可以发现编译器为我们生成了下面这种形式的类:

 

public   class    XXXXX       // XXXXX代表对象的名称
{
      
private string  _name;
      
public string Name
      
{
                
get{return _name;}
                
set{set _name=value;}
       }

      
private string  _price;
      
public string Price
      
{
                
get{return _price;}
                
set{set _price=value;}
       }


       
public XXXXX()        //相应的构造函数
       {}
}

我们还会注意到匿名类里面的字段类型是编译器自己推断出来的。如果两个匿名类结构相同,就像上面的那种情况,编译器只会生成一个匿名类。并且相互可以赋值。 

编译器为我们做了更多的工作,使程序员可以写更少的代码写出更简单的程序。我们可以充分利用C#3.0的一些好特性写出更出色的代码。

你可能感兴趣的:(C#3.0之匿名类型)