泛型将 类型参数 的概念引入了 .NET Framework。

泛型主要有两个优点:

   1、编译时可以保证类型安全。

   2、不用做类型转换,获得一定的性能提升。

泛型方法、泛型委托、泛型接口

   除了泛型类之外,还有泛型方法、泛型委托、泛型接口:

  泛型委托:

        //泛型委托
public delegate void Del<T>(T item); //声明一个泛型委托
public static void Notify(int i) { } //定义一个方法
Del<int> m1 = new Del<int>(Notify); //用委托代替定义的方法

  泛型接口:

      //泛型接口
  interface MyInteface<T1, T2, T3>
  {
  T1 Method1(T2 param1, T3 param2);
  }   public class MyClass<T1, T2, T3> : MyInteface<T1,T2,T3>
  {
  public T1 Method1(T2 param1, T3 param2)
  {
  throw new NotImplementedException();
  }
  }

  泛型方法:

        //泛型方法
public void Swap<T>(ref T t1, ref T t2)
{
T temp = t1;
t1 = t2;
t2 = temp;
}
public void Interactive()
{
string str1 = "a";
string str2 = "b";
Swap<string>(ref str1, ref str2);
Console.WriteLine(str1 + "," + str2);
}

泛型约束:

   可以给泛型的类型参数上加约束,要求这些类型参数满足一定的条件:

约束 说明
 where T : struct  类型参数需是值类型
 where T : class  类型参数需是引用类型
 where T : new()  类型参数要有一个 public 的无参构造函数
 where T : <base class name>  类型参数要派生自某个基类
 where T : <interface name>  类型参数要实现某个接口
 where T : U  这里 T 和 U 都是类型参数,T 必须是或者派生自 U

泛型例子

    public class List<T> { }

    其中,T 就是 System.Collections.Generic.List<T> 实例所存储类型的占位符。

    当定义泛型类的实例时,必须指定这个实例所存储的实例类型。

C# 语法特性 - 泛型(C#2.0)的更多相关文章

  1. [C#] 回眸 C# 的前世今生 - 见证 C# 6.0 的新语法特性

    回眸 C# 的前世今生 - 见证 C# 6.0 的新语法特性 序 目前最新的版本是 C# 7.0,VS 的最新版本为 Visual Studio 2017 RC,两者都尚未进入正式阶段.C# 6.0 ...

  2. Spring框架入门之Spring4.0新特性——泛型注入

    Spring框架入门之Spring4.0新特性——泛型注入 一.为了更加快捷的开发,为了更少的配置,特别是针对 Web 环境的开发,从 Spring 4.0 之后,Spring 引入了 泛型依赖注入. ...

  3. ASP.NET MVC深入浅出系列(持续更新) ORM系列之Entity FrameWork详解(持续更新) 第十六节:语法总结(3)(C#6.0和C#7.0新语法) 第三节:深度剖析各类数据结构(Array、List、Queue、Stack)及线程安全问题和yeild关键字 各种通讯连接方式 设计模式篇 第十二节: 总结Quartz.Net几种部署模式(IIS、Exe、服务部署【借

    ASP.NET MVC深入浅出系列(持续更新)   一. ASP.NET体系 从事.Net开发以来,最先接触的Web开发框架是Asp.Net WebForm,该框架高度封装,为了隐藏Http的无状态模 ...

  4. Delphi 7以来的Delphi 2009测试版新语法特性

    我晕,Delphi 7 以后增加了这么多有用的语法,我都不知道.真是越学越觉得自己浅薄,自己所作的Delphi项目所用的知识还不够Delphi知识储备体系的十分之一,更别说Delphi还在继续发展. ...

  5. 为什么说JAVA中要慎重使用继承 C# 语言历史版本特性(C# 1.0到C# 8.0汇总) SQL Server事务 事务日志 SQL Server 锁详解 软件架构之 23种设计模式 Oracle与Sqlserver:Order by NULL值介绍 asp.net MVC漏油配置总结

    为什么说JAVA中要慎重使用继承   这篇文章的主题并非鼓励不使用继承,而是仅从使用继承带来的问题出发,讨论继承机制不太好的地方,从而在使用时慎重选择,避开可能遇到的坑. JAVA中使用到继承就会有两 ...

  6. C# 语言历史版本特性(C# 1.0到C# 7.1汇总更新) C#各版本新特性 C#版本和.NET版本以及VS版本的对应关系

    C# 语言历史版本特性(C# 1.0到C# 7.1汇总更新) 2017年08月06日 11:53:13 阅读数:6705 历史版本 C#作为微软2000年以后.NET平台开发的当家语言,发展至今具有1 ...

  7. 基于.net的分布式系统限流组件 C# DataGridView绑定List对象时,利用BindingList来实现增删查改 .net中ThreadPool与Task的认识总结 C# 排序技术研究与对比 基于.net的通用内存缓存模型组件 Scala学习笔记:重要语法特性

    基于.net的分布式系统限流组件   在互联网应用中,流量洪峰是常有的事情.在应对流量洪峰时,通用的处理模式一般有排队.限流,这样可以非常直接有效的保护系统,防止系统被打爆.另外,通过限流技术手段,可 ...

  8. 总结常见的ES6新语法特性

    前言 ES6是即将到来的新版本JavaScript语言的标准,他给我们带来了更"甜"的语法糖(一种语法,使得语言更容易理解和更具有可读性,也让我们编写代码更加简单快捷),如箭头函数 ...

  9. C#新语法特性前瞻

    今天逛微软的UserVoice site发现了几个有很有用,也很可能被添加到新版C#中的语法,当然也可能被推迟到下一版,拿出来给大家分享一下. 另外还没投票的可以去为自己最想要的新特性投票,有兴趣的可 ...

随机推荐

  1. 最简单的服务器和客户机(python3的编码与解码问题)

    在学习python的过程中,我越来越感觉到python2和python3之间有很多不同点,最近发现的一点就是编码问题. 在代码清单14-1和14-2中,因为作者是用python2来写得,然后我是用py ...

  2. Web前端新手经典学习路线

    做前端开发八九年的时间,到2015年的时候,Web前端因为HTML5技术的高速发展,成为IT行业中最受欢迎和未来需求人才发展最好的职业,各个行业都想转行做前端开发,包括一些在校的学生,土木工程,一些不 ...

  3. Linux shell 计算两个文件的并集、交集、差集

    假设我们现在有两个文件 a.txt .b.txt a.txt 中的内容如下: a c 1 3 d 4 b.txt 中的内容如下: a b e 2 1 5 # Example 01 计算并集: [roo ...

  4. 动态 hover 使用变相使用

    使用   onmouseover  和 onmouseout 代替 hover foreach (var menu in Model.OrderBy(x => x.Order).Where(x ...

  5. 把一个List拆分为几个大小一样的List

    static void Main(string[] args) { List<String> tarArr = new List<String>(); tarArr.Add(& ...

  6. 【一】jquery之subline编辑器插件安装

    1.地址下载:https://pan.baidu.com/share/link?shareid=552312&uk=151954025 2.打开Sublime, 选择 Prefreences  ...

  7. SqlParameter的两种用法【二】

    private void Loadprovince() { string sql = "select * from Tables where ArealdPid=@pid"; /第 ...

  8. [原][粒子特效][spark]插值器interpolator

    深入浅出spark粒子特效连接:https://www.cnblogs.com/lyggqm/p/9956344.html 插值器是体现粒子生命周期变化的功能 group使用到插值器的方式: 可以看到 ...

  9. 力扣(LeetCode)520. 检测大写字母

    给定一个单词,你需要判断单词的大写使用是否正确. 我们定义,在以下情况时,单词的大写用法是正确的: 全部字母都是大写,比如"USA". 单词中所有字母都不是大写,比如"l ...

  10. RestTemplate学习

    在学习spring cloud的时候,用到了RestTemplate,找到一篇博客,写的很好,学习转载! 文章转载自:https://blog.csdn.net/itguangit/article/d ...