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

正中路桥建设发展有限公司网站做导航网站有发展吗

正中路桥建设发展有限公司网站,做导航网站有发展吗,量品定制官网,网站开发与管理内容假设需要一个两个整形变量交换的函数#xff0c;我们很快就可以嗒嗒嗒嗒的敲出下面的 Swap 函数#xff1a;void Swap(ref int lhs, ref int rhs){int temp lhs;lhs rhs;rhs temp;}随着项目进展#xff0c;我们发现#xff0c;需要用到 Swap 函数的不仅是整形,变量 还有…假设需要一个两个整形变量交换的函数我们很快就可以嗒嗒嗒嗒的敲出下面的 Swap 函数 void Swap(ref int lhs, ref int rhs){    int temp lhs;    lhs rhs;    rhs temp;} 随着项目进展我们发现需要用到 Swap 函数的不仅是整形,变量 还有字符串于是我们我又嗒嗒嗒嗒的重载 Swap 函数如下 void Swap(ref string lhs, ref string rhs){    string temp lhs;    lhs rhs;    rhs temp;} 接下来的开发中我们又发现还有自定义的结构体类等等等等都要用到 Swap 函数。如果我们为每一种类型都实现一个相应的 Swap 函数的话各个版本的 Swap 函数数据类型不同外其它完完全全一样。也就是说项目中存在大量的代码重复。能不能之实现一个能够适用于不同数据类型的 Swap 函数消除这种代码冗余从而减少工作量提高开发效率呢类型转换在 C# 中 所有的类型都直接或间接的继承自 System.Object 类。换句话说所有的类型都可以转换为 Object 类。这为我们前面的问题提供了一个解决方案——实现一个以 Object 为类型参数的 Swap 函数。其实现如下 void Swap(ref object lhs, ref object rhs){    object temp lhs;    lhs rhs;    rhs temp;} 调用的代码如下//a, b 为要传入 Swap 函数的变量object objA a;object objB b; Swap(ref objA, ref objB); //T 为变量 a 和 b 的数据类型a (T)objA;b (T)objB; 这一实现利用类型转换有效的重用了 Swap 的代码但有两点不足。 首先是性能问题。每次调用 Swap 函数前需要对其参数进行一次向上的转型调用完之后又要对其进行一次向下的转型。如果需要多次调用 Swap 函数(比如在一个很大的循环中)转型带来的开销是想当可观的特别是当参数为值类型的时候。 第二是无法提供编译时类型检查。下面的例子虽然能通过编译但运行时会出现异常 string a  “This is a string”;int b 0; object objA a;object objB b; Swap(ref objA, ref objB);               //可以编译 a (string)objA;               //出现运行时异常b (ing)objB; 针对以上两点不足C# 2.0 提出了泛型。泛型泛型是C# 2.0 提供的延迟类和函数中数据类型的定义直到客户代码声明或实例化该数据类型。 泛型版的 Swap 函数实现如下 void SwapT(ref T lhs, ref T rhs){    T temp lhs;    lhs rhs;    rhs temp;}          泛型集合中的 T是obj类型上例中的类型参数 T 可以实例化为任意数据类型。相对于通过类型转换重用 Swap 函数它且不需要类型转换有效的提高性能。而且它还能提供编译时类型检查。调用语法与普通函数调用完全一样。泛型的优势从上面例子可以看出使用泛型具有如下三点优势 ?       避免重复代码最大化代码重用?       避免无谓的类型转换提高性能?       提供编译时类型检查具有类型安全性 C# code // 在三角符号里写入类型参数Tpublic class GenericListT {// Node为非泛型类作为GenericListT的嵌套类 private class Node {// 在非泛型构造函数中使用T public Node(T t) { next null; data t; }private Node next;public Node Next {get { return next; }set { next value; } }// T作为私有成员的数据类型 private T data;// T作为属性的返回类型 public T Data {get { return data; }set { data value; } } }private Node head;// 构造函数 public GenericList() { head null; }// T 作为方法的参数类型 public void AddHead(T t) { Node n new Node(t); n.Next head; head n; }public IEnumeratorT GetEnumerator() { Node current head;while (current ! null) {yield return current.Data; current current.Next; } }}下面的代码示例演示客户端代码如何使用泛型 GenericList T 类来创建整数列表。只需更改类型参数即可方便地修改下面的代码示例创建字符串或任何其他自定义类型的列表 C# code class TestGenericList{static void Main() {// int 是类型变量 GenericListint list new GenericListint();for (int x 0; x 10; x) { list.AddHead(x); }foreach (int i in list) { System.Console.Write(i ); } System.Console.WriteLine(\n完成); }}泛型也在用在类里可以对参数进行约束而对于new约束而言有点特殊 public class DictionaryK,V where K: IComparable{    public void Add(K key, V value)    {                if (key.CompareTo(x)  0) {}            }}这样就保证了任何为K类型参数提供的类型都实现了IComparable接口。所以我们的key就可以使用CompareTo方法了。 如果我们在使用时提供了没有实现IComparable接口的类型就会出现编译时错误。对于new()约束大家可能有一个误解以为使用了new约束之后在创建对象时与非泛型的版本是一致的publicclassTesterTwhereT:new(){publicTester(){tnewT();//等同于非泛型版本的new?例如objectonewobject();?}privateTt;}  事实上使用new关键字的作用只是让编译器在泛型实例化之处检查所绑定的泛型参数是否具有无参构造函数TesterSomeTypetnewTesterSomeType();//此处编译器会检查SomeType是否具有无参构造函数。若没有则会有compileerror 转载于:https://www.cnblogs.com/dewin/archive/2009/06/28/1512868.html
http://www.lebaoying.cn/news/74606.html

相关文章:

  • 西安网站建设第一品牌最新军事新闻视频在线观看
  • 北京招聘网站建设wordpress账号密码在哪个文件下
  • 校园网站建设实施方案上海网站代优化
  • 洪梅网站仿做wordpress 数据表前缀
  • 嘉兴网站建设方案专做情侣装网站
  • 浙江住房城乡建设厅网站首页一个阿里云怎么做两个网站
  • 软文素材网站wordpress防站
  • 怎样注册免费网站一个上线的网站需要怎么做
  • 代做网站公司有哪些seo短视频网页入口引流免费
  • 海南省住建设厅网站报监的工程网站logo图怎么做
  • 高端大气的网站制作三亚兼职招聘信息网站
  • 丹东网站开发公司广州企业建站网站
  • 怎么看一个网站谁做的优化怎么获取免费的网站域名
  • 黄石网站建设推荐海外人才招聘网
  • 现在有没有免费的网站WordPress 百度 主动
  • 物流网站建设策划书怎样做婚恋网站
  • 网站建设 我们是专业的只做美食类目产品的网站
  • 网站建设英文怎么说无锡网站建设运营
  • 北京示范校建设网站微信招聘网站建设
  • 抄袭别人网站网站做网站广告
  • 手机网站建设制作教程三门峡市湖滨区建设局网站
  • 为网站网站做宣传wordpress主题使用加
  • 网站建设实战李静检查wordpress主题
  • 西安企业自助建站页面设计是什么意思
  • 做360全景有什么网站关于网站设计的论文
  • 早教网站设计公众平台 wordpress
  • 手机网站做分享到朋友圈东莞推广外包
  • 中国十大网站有哪些西安巨久科技网站建设
  • 手机网页版网站开发注册个网站多少钱
  • 上海著名的网站制作公司西安今天的新消息未央区