当前位置: 首页 > news >正文

wordpress网站导入数据库电商学院建设设计网站

wordpress网站导入数据库,电商学院建设设计网站,营销类网站如何优化,东莞松山湖房价类型类是另外一项正被考虑引入.NET未来版本的特性。在提案“外观和扩展#xff08;Shapes and Extensions#xff09;”中#xff0c;该特性被称为外观#xff0c;它们将大幅提升.NET泛型的能力。Mads Torgersen这样描述类型类#xff1a; 接口抽象的是作为类型实例的对象…类型类是另外一项正被考虑引入.NET未来版本的特性。在提案“外观和扩展Shapes and Extensions”中该特性被称为外观它们将大幅提升.NET泛型的能力。Mads Torgersen这样描述类型类 接口抽象的是作为类型实例的对象和值的“外观shape”。从根本上讲类型类背后的思想是抽象类型本身的外观。而且当通过类型声明引入需要的类型实现一个接口时其他人可以在单独的代码中实现类型类。 类型类解决了一个长期存在的接口问题它们无法处理静态函数或操作符重载。这导致了一些问题比如在数学库中对于不同的数值数据类型需要反复声明相同的函数。 Mads总结道 一般来说外观的声明和接口声明非常像但它 几乎可以定义任意类型的成员包括静态成员 可以通过扩展实现 可以在特定的地方像类型一样使用 最后一个限制很重要外观不是类型。外观的主要目的是作为泛型的一种约束限定类型参数保证它们有正确的外观并允许泛型声明体使用那个外观。 与外观的思想紧密相关的是一种经过改进的扩展语法。扩展结构几乎可以为类型类提供任何东西而不只是方法扩展。考虑下面这个最简单的例子 public shape SNumberT {static T operator (T t1, T t2);static T operator -(T t1, T t2);static T Zero { get; } } Int32类型已经提供了大部分内容但它缺少zero属性。扩展可以修复这个问题 public extension IntGroup of int : SNumberint {public static int Zero 0; } 然后你可以像下面这样使用它 public static AddAllT(T[] ts) where T : SNumberT // shape用作约束 {var result T.Zero; // 使用shape的Zero属性foreach (var t in ts) { result t; } //使用shape的 操作符return result; } 实现 这实现起来需要一些接口和结构方面的技巧。 Shapes被翻译成了接口每个成员甚至是静态成员都转换成了接口中的实例成员扩展被翻译成了结构每个成员甚至是静态成员转换成了结构中的实例成员如果扩展实现了一个或多个弯管则底层的结构实现了那些外观的底层接口。 通常上述结构被称为“见证结构witness struct”。它的存在可以证明一个类遵循外观的规则。或者换句话说该类在类型类中。 编译器会将上述AddAll方法翻译成如下代码 public static T AddAllT, Impl(T[] ts) where Impl : struct, SNumberT {var impl new Impl();var result impl.Zero;foreach (var t in ts) { result impl.op_Addition(result, t); }return result; } 然后上述见证结构就可以用于向AddAll方法提供必要的功能。结构可以直接在类型上调用方法或者根据需要使用扩展结构。 在类和接口中实现外观 使用和我们扩展基类及实现接口一样的语法类可以显式实现一个外观。然后编译器会提供相应的见证结构。 也可以将接口标记为满足外观的要求。下面是一个例子 public extension ComparableT of IComparableT : SComparableT ; 由于IComparable和理论上的类型类之间存在一对一关系所以我们不需要为扩展结构提供扩展体。 泛型类型 事实证明泛型类型有他们自己的问题。和泛型方法一样向泛型类添加外观或者类型类作为类型约束需要额外提供一个类型参数。在泛型类上由于类型参数的数量是其名称的一部分所以这会导致它和其它名称相同的泛型类型发生冲突。 扩展外观 扩展结构不仅可以用于实现外观还可以扩展它们。因此你可以向现有的外观中添加新方法、静态方法及操作符。正如扩展方法一样语法是一样的就像它们在底层类型上直接定义了一样。 评论 总的来说人们对于该特性的反应不错。不过也有一些修改请求。例如外观目前必须显式实现。有些开发人员希望如果特定的类或接口不需要额外扩展方法时就由编译器隐式实现。Mads列举了这样做的一些问题 那可能会导致为了见证以相同的方式应用到同一类型的同一个外观而生成许多结构类型有生成的类型过度扩散的风险。如果编译器比较聪明每个程序集只生成一个或许可以缓解这种情况但我们从匿名类型了解到这种重复数据删除技术非常困难而且很容易出错。 如果我们允许泛型类型拥有外观约束的类型参数那么同一个东西拥有多个见证结构会导致实例化的泛型类型具有不同的类型标识无法互换。 人们还担心外观和扩展绑定得太紧。他们认为那将来可能会引起混淆。 对此Mads答复说 合并在我的提案里“扩展”实际上合并了多个问题 [……] 我觉得对于上述服务于所有这些目的的语言机制有太多内容需要讨论——但归根结底它们的关系非常密切。如果有一个提案可以将它们清晰地分开那将是非常有意义的。那也许会更加简单有效。 原文地址http://www.infoq.com/cn/news/2017/04/DotNet-Type-Classes .NET社区新闻深度好文微信中搜索dotNET跨平台或扫描二维码关注
http://www.pierceye.com/news/489851/

相关文章:

  • 网站建设的实验步骤wordpress linux 建站教程
  • 哪个网站专门做邮轮旅游的加拿大28平台微信
  • 网站设置的用途wordpress 5.1 运行环境
  • 中小企业服务中心网站建设网站域名中文后缀
  • 龙武工会网站怎么做5173游戏交易网站源码
  • 网站建设设计时代创信好海南城乡和住房建设厅网站
  • 大连最好的做网站的公司崇义做网站
  • 圣弘建设股份有限公司网站上海图文设计有限公司
  • gta5资产网站正在建设零基础自学设计
  • 深圳专业制作网站公司吗网站信息化建设报送
  • 苏州网站建设运营推广网站一年多少钱?
  • WordPress国外主机湖北短视频seo营销
  • 南通网站建设电话设计一个网站要多少钱
  • 好的模板网站建设网站规划 时间
  • 昆明seocn整站优化网站建设如何报价
  • 网页设计模板免费网站WordPress生成网站地图
  • 做网站 侵权做外贸怎么看外国网站
  • 网站建设知识点的总结普通网站建设是什么
  • 杭州网站建设费用多少合肥高新城建设计院网站
  • 炫酷特效网站asa8.4 做网站映射
  • 郑州租赁房网站建设九江快乐城
  • 手机网站建站教育模板微信网站 教程
  • 网站的结构犀牛云做网站多少钱
  • 网站服务器用什么配置公司网站建设的视频教程
  • idea做网站网络营销与网站推广的区别
  • 建一家网站多少钱微信小程序在哪里查找
  • 东阳网站推广英文网站源码下载
  • 介绍湛江网站高端网站建设网站定制
  • 网站的特征包括哪些方面wordpress缓存插件 w3
  • 东莞专业网站营销wordpress新建页面模板