下载此beplayapp体育下载

CTuple与匿名类型.doc


beplayapp体育下载分类:IT计算机 | 页数:约7页 举报非法beplayapp体育下载有奖
下载提示
  • 1.该资料是网友上传的,本站提供全文预览,预览什么样,下载就什么样。
  • 2.下载该beplayapp体育下载所得收入归上传者、原创者。
  • 3.下载的beplayapp体育下载,不会出现我们的网址水印。
beplayapp体育下载列表 beplayapp体育下载介绍
Tuple、匿名型别和具象型别
作者:Bill Wagner
2010 年 1 月
.NET Framework 版在基底类别库中加入 Tuple。Tuple 的用途与匿名型别相似,这是 C# 开发人员所面临的挑战之一 。而如何在这两者间选择最恰当的解决方案,可说是一大考验。 在本文中,我将探讨它们的几点差异,并说明何时该选用哪种解决方案。此外,我还会讨论在某些案例中,您应该避免在宣告的型别中使用 Tuple 或匿名型别。
Tuple 可让您免掉一堆重复的工作,但使用它们也可能在像 C# 这类的程序语言中产生完全无法辨识的程序代码。Tuple 是包含 N 个项目的数据值。.NET Framework 支持包含 1 到 8 个成员的 Tuple。若要使用包含 8 个成员以上的 Tuple,您必须使用另一个 Tuple 成员,Octtuple。
您大概已经很熟悉匿名型别。我们先来温****一下它的功能。透过具现化对象 (我指的是广义的「物件」,而非「」) 并为对象的每个属性指派值,您可以在程序代码中的任何地方建立匿名型别:
var point = new { X = 50, Y = 100 };
点 (point) 是匿名型别的物件。您可以使用任意数量的属性来宣告匿名型别,而且这些属性不一定要是相同的型别:
var person = new {
FirstName = "Bill",
LastName = "Wagner",
DateOfBirh = default(DateTime?)
};
编译器所产生出的内部密封类别可模拟匿名型别。匿名型别是不可变的;所有属性都是只读。该类别包含用来实作数值语意的 Equals() 和 GetHashCode() 覆写。另外,编译器还会产生 ToString() 的覆写,以便显示每个公用属性的值。
对于匿名型别,您不用撰写任何程序代码,但也无法为匿名型别定义新行为。匿名型别的型别名称并非有效的 C# 符号 (显然这些名称属于有效的 CLR 符号),因此您甚至无法在匿名型别上定义扩充方法来建立其它行为。同样的道理,您无法宣告以匿名型别为参数的方法,或是从方法传回匿名型别 (针对从方法传回匿名型别,Tomas Petricek 有一个有趣的解决方法:,若要使用这个方法,必须对编译器的本质有大致的了解,而且不保证适用于未来的语言版本)。
既然匿名型别有这么多限制,为何还要使用它呢?就我而言,原因有两个。首先,编译器撰写程序代码的速度比我快。编译器能针对各个新的匿名型别建立一整页的程序代码。而这些程序代码我都不用自己写、测试和侦错,这样能省下许多时间。再者,匿名型别非常适合用于支持算法但不属于系统整体对象模型一部份的区域数值。由于型别是匿名的,因此不会扰乱系统的整体面貌。对于匿名型别,您不用浏览程序代码,匿名型别不会显示在类别检视中,而且也不需要外部文件。其作用只是迅速提供些许功能。
Tuple 可以解决相关的问题。Tuple 是固定不变的,而且是语法型别:Tuple 针对特定 Tuple 不会描述任何行为。Tuple 有一点胜过匿名型别:Tuple 不是匿名型别,因此可以当作传回值或方法参数。但是利用这项优

CTuple与匿名类型 来自beplayapp体育下载www.apt-nc.com转载请标明出处.

相关beplayapp体育下载 更多>>
非法内容举报中心
beplayapp体育下载信息
  • 页数7
  • 收藏数0 收藏
  • 顶次数0
  • 上传人crh53719
  • 文件大小21 KB
  • 时间2021-01-11