另一种眼光看VB中的匿名类型

2008-02-04 10:54:33.0     推荐:0    收藏:0    评论:15     来源:e800.com.cn
C#中的匿名类型非常简单,因为这些匿名类型都是不可变的。而VB却同时支持可变和不可变的匿名类型,对于这两种匿名类型,实现和使用的规则也略有不同。

不可变的匿名类型

C#和VB中的不可变匿名类型完全相同。这些匿名类型都是一些只读的属性集合,还包含有Equals、ToString、GetHashCode等方法的重载。从反编译的代码中可以看出,二者的实现存在着些许不同,不过结果却是一样的:Equals和GetHashCode方法都基于类型中的所有字段计算得出。

C#只允许我们使用不可变的匿名类型。而在VB中若想得到不可变的匿名类型,我们需要使用Select子句或者在类型中每个字段前面加上Key关键字,例如:

var a = new { Name = "Tom", Age = 25 };
[…] Select c.Name, c.Age
[…] Select New With {Key c.Name, Key c.Age}
Dim a = New With {Key .Name = "Tom", Key .Age = 25}


可变的匿名类型

相对于不可变匿名类型,VB中可变的匿名类型则简单得多。这些类型没有Equals或GetHashCode方法,因此若想比较两个对象,我们必须手工进行。可变的匿名类型也不会自动为字段生成属性的Setter。

例如:

[…] Select New With { c.Name, c.Age} 
Dim b = New With { .Name = "Tom", .Age = 25}


部分可变的匿名类型

若是匿名类型中的某些(但不是全部)字段被标记为Key,那么我们就创建了一个部分可变的匿名类型。对于这种类型,标记为Key的字段是只读的,而没有标记为Key的字段则可读可写。

对于部分可变的匿名类型,使用其Equals或GetHashCode方法必须格外小心——只有标记为Key的字段将用于这两个方法中的计算,而其他可变的字段将被忽略。这样的实现有利于把可变字段放置在哈希表中,以提高查询时的效率。

例如:

[…] Select New With {Key c.Name, c.Age} 
Dim c = New With {Key .Name = "Tom", .Age = 25}

您可以针对本文进行:[评论]  [收藏]  [推荐]  
  • [15楼] 2008-09-29 12:38:58.0  fcard
  • [回复]
  • 广州市英泽电子有限公司是一家专业的一卡通产品研发、生产商,该公司销售的产品主要有:门禁、门禁读卡器、门禁控制器、考勤机、消费机、巡更机、读卡模块、远距离读卡器、酒店锁、门禁系统、ID卡、IC卡、电锁、三辊闸、HID读卡器、停车场系统等。同时该公司设有专业的卡片印刷业务部门,可专业提供证卡设计、卡片印刷事物。目前我们持有品牌:FCARD、仙卡、MICROPOWER、微动力等。

    详细信息请登陆:http://www.pc15.net/ 

  • [14楼] 2008-09-11 16:40:00.0  fcard
  • [回复]
  • 广州市英泽电子有限公司是一家专业的一卡通产品研发、生产商,该公司销售的产品主要有:门禁、门禁读卡器、门禁控制器、考勤机、消费机、巡更机、读卡模块、远距离读卡器、酒店锁、门禁系统、ID卡、IC卡、电锁、三辊闸、HID读卡器、停车场系统等。同时该公司设有专业的卡片印刷业务部门,可专业提供证卡设计、卡片印刷事物。目前我们持有品牌:FCARD、仙卡、MICROPOWER、微动力等。

    详细信息请登陆:http://www.pc15.net/

  • [13楼] 2008-04-26 14:40:13.0  网友
  • [回复]
  • 福彩双色球100%预测http://www.ssq-500w.cn/index.asp?ybao
    福彩双色球100%预测,08年截止46期已中5次一等奖,2次二等奖,历史战绩可到网站查询福彩双色球100%预测http://www.ssq-500w.cn/index.asp?ybao,用数据说话,用中奖证明实力。会员对网站预测资料不满意,(3)天内可申请退款!!本站郑重承诺,会员一次注册终身有效,除会员费109元外绝无其他费用。祝您早日中取百万大奖!!http://www.ssq-500w.cn/index.asp?ybao
         1892
  • [12楼] 2008-04-24 22:51:42.0  网友
  • [回复]
  • lv包包批发,gucci箱包批发,chanel包包批发,路易威登,lv包,gucci包,chanel包,burberry芭宝丽 羊毛羊绒围巾  尺寸:33*180 颜色:多 加工方式:缎档 编织方法:经编 款式
    :加长围巾 材质:羊绒... 盐城市丹顿服饰品有限 ... 羊毛围巾,外贸服饰批发  加工方式:
    绣花 编织方法:多款供选 款式:中长围巾 材质:羊毛... 上海皮具箱包服饰有限公司
    .要批发的..请联系..
    QQ:307396002
    MSN:lindongyong88@hotmail.com
    相册:http://photo.163.com/photos/vip200088/
    網址:http://www.mingpinbao.com/
    淘宝批发代理:http://shop34309571.taobao.com/
  • [11楼] 2008-04-23 19:31:43.0  网友
  • [回复]
  • 围巾帽子批发(厂家批发)--民族娃娃批发、家居饰品、小饰品批发网、批发布包、钱包、钱包批发、手机套、藏饰、重彩画、土陶、民族服饰、东巴皮画和民族娃娃等,欢迎批发。
    我们的联系方式: 
    MSN:lindongyong88@hotmail.com
    在线QQ: 307396002
    網址:http://photo.163.com/photos/vip200088/
    网站:http://www.mingpinbao.com/
  • [10楼] 2008-04-13 15:25:13.0  网友
  • [回复]
  • 我公司供应外墙保温专用设备,干粉砂浆成套设备是由我公司自主研制开发的专做特种干粉砂浆的中小型设备。跟国内同类产品相比,该机具有以下显著的优点:
    1.分散性好.
    2.使用范围广.
    3.性价比高.
    4.使用简单方便.
    人3-6人即可.
    4.提供生产所需原材料的生产商和供应商的详细资
    5.培训工程技术和销售人员.
  • [9楼] 2008-04-12 09:51:51.0  网友
  • [回复]
  • 我公司供应外墙保温专用设备,干粉砂浆成套设备是由我公司自主研制开发的专做特种干粉砂浆的中小型设备。跟国内同类产品相比,该机具有以下显著的优点:
    1.分散性好.
    2.使用范围广.
    3.性价比高.
    4.使用简单方便.
    人3-6人即可.
    4.提供生产所需原材料的生产商和供应商的详细资
    5.培训工程技术和销售人员.
  • [8楼] 2008-04-09 15:17:31.0  网友
  • [回复]
  • 厂家直销:五行蔬菜汤 牛蒡茶 糙米茶 牛蒡片(干) 新鲜牛蒡,销售电话:0516-89666969  客服QQ:750259802 淘宝店铺:http://shop34080241.taobao.com/  欢迎新老客户光临: 费邮购欢迎来订购
         3428
  • [7楼] 2008-04-07 03:56:22.0  网友
  • [回复]
  • 不错!也欢迎来我的网站看看,常来常往!
    》[url=http://www.ipipnet.com]门禁[/url].[url=http://www.shineeye.cn]眼镜[/url].[url=http://www.shineways.cn]门禁[/url].[url=http://www.ipipnet.com/mjzx/]门禁系统[/url].[url=http://www.shineeye.cn]隐形眼镜[/url].[url=http://www.ipipnet.cn]楼梯[/url].[url=http://www.shineweb.cn]IT外包[/url].[url=http://www.shinevip.cn]白癜风[/url].[url=http://www.ipipnet.com/mjzx/]门禁[/url].
  • [6楼] 2008-04-05 02:44:41.0  网友
  • [回复]
  • 不错!也欢迎来我的网站看看,常来常往!
    》[url=http://www.ipipnet.com]门禁[/url].[url=http://www.shineeye.cn]眼镜[/url].[url=http://www.shineways.cn]门禁[/url].[url=http://www.ipipnet.com/mjzx/]门禁系统[/url].[url=http://www.shineeye.cn]隐形眼镜[/url].[url=http://www.ipipnet.cn]楼梯[/url].[url=http://www.shineweb.cn]IT外包[/url].[url=http://www.shinevip.cn]白癜风[/url].[url=http://www.ipipnet.com/mjzx/]门禁[/url].
  • 共有15条评论  点击查看更多评论
  • 网友评论仅供网友表达个人看法,并不表明e800同意其观点或证实其描述
我想发表评论:
用户名密码
  • 匿名发表
    验证码: