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

柳州网站建设 来宾市网站制作百度指数的数值代表什么

柳州网站建设 来宾市网站制作,百度指数的数值代表什么,江西微网站建设,潍坊网站建设目录 泛型所提供的好处有以下3点C#提供的泛型机制主要可以分为以下两种形式Mono运行时对泛型机制的优化泛型委托泛型委托中的泛型类型参数可以是以下3种中的其中一种#xff1a;什么是泛型约束泛型约束一共有6种#xff1a;泛型中的类型约束的几种形式类型约束的组合合法的约… 目录 泛型所提供的好处有以下3点C#提供的泛型机制主要可以分为以下两种形式Mono运行时对泛型机制的优化泛型委托泛型委托中的泛型类型参数可以是以下3种中的其中一种什么是泛型约束泛型约束一共有6种泛型中的类型约束的几种形式类型约束的组合合法的约束组合不合法的约束组合 泛型的类型推断 C#2所带来的最重要的一个功能就是引入了泛型。 泛型所提供的好处有以下3点 类型安全使用泛型类型或泛型方法来操作一个具体的数据类型时编译器能够理解开发人员的意图并且保证只有与制定数据类型兼容的对象才能用于该泛型类型或泛型方法。当使用不兼容类型的对象时则会造成编译错误甚至是在运行时抛出异常。例如在上面的代码中对一个声明了操作类型为string的列表添加int型数据时编译器会报错。更加清晰的代码正如本章开始所说的在没有引入泛型机制的C#1的时代源代码中不得不进行的强制类型转换次数是很多的因此代码相对不易维护和拓展。在引入了泛型机制后源代码中不必进行很多强制类型转换因此代码变得更加容易维护。例如在上面的代码中将ListT中索引为0的元素取出来并且赋值给一个stirng型的变量s的过程并没有强制类型转换。更加优秀的性能同样在本章开始就提到过的如果没有泛型机制的话为了使用同一套常规化的逻辑方法则必须使用object作为参数或返回值的类型。但一个不得不承认的事实是object类型其本身其实是一个很“没有用”的存在这是由于如果要使用object做一些真正具体有意义的事情则几乎不得不进行强制类型转换转换成目标类型。同时由于object是引用类型当实际操作类型是值类型时则又面临另一个十分影响性能的操作——装箱操作。Mono运行时将不得不在调用该逻辑方法之前对值类型实例进行装箱。但是引入泛型机制后由于能够通过该机制创建一个泛型类型或泛型方法来操作值类型因此值类型的实例就无须执行装箱操作反而可以直接通过传值的方式来传递了。与此同时由于无须进行强制类型转换因此在Mono运行时无须去验证这种转型是否类型安全。泛型机制使得大量的安全检查从运行时转移到了编译时进行因此提高了代码的运行速度。 C#提供的泛型机制主要可以分为以下两种形式 泛型类型包括类、接口、委托以及结构值类型但是需要注意的是并不包括泛型枚举。泛型方法。 Mono运行时对泛型机制的优化 Mono运行时内部采用了一套优化机制来避免这种情况的发生也就是使某个编译后的“方法/实参类型”组合能够复用。假如某个特定的类型是某个泛型方法的类型实参该“方法/实参类型”组合只需要被编译一次之后再调用该方法就不需要再次编译了。例如一个Dictionarystring, int被编译一次之后代码中再出现Dictionarystring, int就不需要编译了。 另一个优化就是它认为所有的引用类型的实参都是完全相同的这是因为所有的引用类型的实参甚至是变量都是指向托管堆上某个对象的指针因此可以采用统一的方式来处理。例如ListString和ListStream的代码编译之后都是相同的因为它们的类型实参String和Stream都是引用类型。但是与此相反的是如果类型实参是值类型则必须单独编译成原生代码。 泛型委托 泛型委托中需要特别指出的一点是泛型委托类型实参的逆变性和协变性。 泛型委托中的泛型类型参数可以是以下3种中的其中一种 不变量即泛型类型参数无法更改。逆变量即泛型类型参数可以从一个类更换为该类的某个派生类。在C#游戏脚本中使用关键字in来标识一个泛型类型参数是逆变量。需要注意的是逆变量泛型参数只能出现在传入的位置例如方法的参数。协变量即泛型类型参数可以从一个类更换为该类的某个基类。在C#游戏脚本中使用关键字out来标识一个泛型类型参数是协变量。需要注意的是协变量泛型参数只能出现在输出的位置例如方法的返回值的类型。 什么是泛型约束 让泛型的类型有一定的限制 关键字where 泛型约束一共有6种 值类型 where 泛型字母struct引用类型 where 泛型字母class存在无参公共构造函数 where 泛型字母new()某个类本身或者其派生类 where 泛型字母类名某个接口的派生类型 where 泛型字母接口名另一个泛型类型本身或者派生类型 where 泛型字母另一个泛型字母 泛型中的类型约束的几种形式 第1种约束——引用类型约束 引用类型约束是常见的一种约束形式。它保证了使用的类型实参必须是引用类型的。写作“T : Class”且必须是类型参数的第一个约束。指定了引用类型约束后类型实参只能是类、接口、数组、委托等引用类型。第2种约束——值类型约束 值类型约束和引用类型约束对应它保证了类型实参必须是值类型写作“T : struct”。指定了值类型约束后类型实参只能是结构、枚举等值类型。第3种约束——构造函数类型约束 顾名思义构造函数类型约束主要用来检查类型实参是否有可用于创建类型实例的无参数构造函数写作“T : new()”且必须是类型参数的所有约束的最后一个。构造函数类型约束经常被用在工厂风格的设计模式中在这种模式中一个对象会在需要时创建另一个对象。第4种约束——转换类型约束 转换类型约束的特点是指定的类型实参的类型必须可以通过一致性转换引用转换甚至是装箱来转换为约束的类型。虽然转换类型约束只能指定一个类但是却可以指定多个接口。 类型约束的组合 让我们将一组类型约束的组合中的约束划分一下可以得到几个分类分别是主要约束、次要约束以及构造函数约束。 主要约束包括引用类型约束、值类型约束以及指定为类的转换类型约束次要约束则包括接口或其他类型参数的转换类型约束。这样我们的类型约束组合的组成就变得十分清晰了主要约束是可选的但只能有一个次要约束可以有多个构造函数约束也是可选的只不过当主要约束是值类型约束时就不再需要构造函数约束了。 合法的约束组合 class ExampleT where T : class, IComparabT, IDisposable, new()class ExampleT where T : struct,IDisposable。class ExampleT, U where T : struct where U : class.class ExampleT, U where T : String where U : IComparableT 不合法的约束组合 class ExampleT where T : class, struct.class ExampleT where T : struct, new().class ExampleT where T : new(), Stream.class ExampleT where T : IDisposable, Stream.class ExampleT, U where T : struct where U : class, T. 泛型的类型推断 C#中类型推断的基本步骤。 对于方法中的每一个方法实参不是类型实参都进行推断来确定其类型。验证上一步中的所有方法实参的类型都是一致的如果从一个方法实参推断出的类型实参和从另一个方法实参推断出的类型实参不一致那么这次方法调用的类型推断便是失败的。验证泛型方法所需要的所有类型实参都已经被推断出来。让编译器推断一部分而自己显式的指定一部分是不被允许的。
http://www.pierceye.com/news/199638/

相关文章:

  • wordpress建站教程视频教程百度推广登录首页
  • dede织梦php文章图片网站源码 完整后台 带在线音乐做企业网站进行推广要多少钱
  • 网站正在建设中手机版基于wordpress论文
  • 建设培训网站查询战网
  • 正能量网站下载做网站沧州
  • 网站维护需要什么技能wordpress博客评论删除
  • 行业网站设计师招聘广州番禺网站建设公司推荐
  • 正规网站模板设计软件工程学科评估
  • 网站集约化建设 要求惠州做棋牌网站建设哪家技术好
  • c#如何做公司网站做网站背景图怎么插
  • 国外做耳机贸易的平台网站定制网站
  • seo做的最好的十个网站加工订单网
  • 网站项目建设主要内容网站导航优化的描述
  • 网站后台修改图片网站制作多少钱公司
  • 做网站后台需要写代码吗益阳seo网站建设
  • 小程序网站做多大尺寸辽阳住房和城乡建设网站
  • 昆山app网站制作网站的管理权限有什么用
  • 购物网站建设开题报告企业宣传方案模板
  • cdr做好排班怎么做网站我的免费网是个什么网站
  • 如何做别人网站镜像地区性中介类网站建设
  • 做的网站怎么查看点击率安装wordpress主题失败
  • 网站历史权重查询免费的黄冈网站有哪些下载软件
  • 宝安三网合一网站建设河北智能网站建设平台
  • 在百度上做网站有用吗wordpress环境虚拟机安装
  • 怎么做网站图片链接中元建设网站
  • 邢台做网站优化价格网站基本维护
  • 网站集群建设价格wordpress 加文章列表
  • 官方网站案例用ps做网站主页
  • 做名片的网站推广型网站建设销售
  • 河南省建设执业资格注册中心网站网站推广公司 sit