asp.net 泛型、泛型约束
来源:互联网 发布:大数据运维需要学什么 编辑:程序博客网 时间:2024/06/03 04:44
开篇先说一下泛型的优点
1、可以通过一个方法实现多种参数的调用
2、性能无损失
3、生命方法的时候没有指定类型,调用的时候指定,这就是一种延迟
泛型的创建举例
泛型方法
public static void Show<T>(T t) { Console.WriteLine("参数类型是:{0}",typeof(T)); }调用方法
string sValue = "这里是一串汉字"; Generic.Show<string>(sValue); Generic.Show(sValue);//这样<string>不写 系统也会根据传入参数自行判断类型泛型接口
public interface Iinterface<T> { void Say(); }
注:继承泛型接口是有限制的,有2种方式
第一种:类也是泛型
public class NewClass<T> : Iinterface<T> { public void Say() { } }第二种:直接指定接口泛型参数类型
public class NewClass:Iinterface<string> { public void Say() { } }
泛型类
public class Tclass<T> { }
泛型委托
public delegate void Tdelegate<T>(T t);
多泛型参数
泛型参数不是只能设置一个T,而且也不一定必须叫T ,T只是一个占位符而已 并且可以多个
public static void Show<T, S, W, Y>(T t, S s, W w, Y y) { }
泛型返回值
public T ShowIs<T>() { return default(T);//根据类型返回默认值 }
泛型约束
泛型约束,是对泛型参数进行一定的约束,从而达到可以实现更多的功能下面代码表示,对T参数进行约束 传入的需要是一个引用类型参数
public static void Show1<T>(T t) where T:class { Console.WriteLine("参数类型是:{0}", typeof(T)); }如果这个时候 传入一个值类型 就会报错了,如图
当然 也可以约束只能传入一个值类型,如下
public static void Show2<T>(T t) where T : struct//需要传入一个值类型 { Console.WriteLine("参数类型是:{0}", typeof(T)); }或者是一个自定义类
public class People { }
public static void Show3<T>(T t) where T : People//需要传入People类型或者他的子类 { Console.WriteLine("参数类型是:{0}", typeof(T)); }
或者继承某一个接口
public interface Iinterface1 { }public static void Show3<T>(T t) where T : Iinterface1//需要传入的类型继承该接口 { Console.WriteLine("参数类型是:{0}", typeof(T)); }
或者必须有一个无参构造函数(可以约束无参构造函数但不可以约束有参数的构造函数)
有new()约束 还可以创建T对象哦
public static void Show3<T>(T t) where T : new()//需要传入的类型有无参构造函数 { T t = new T();//设置了new()约束后可以创建对象哦 Console.WriteLine("参数类型是:{0}", typeof(T)); }
当然。也可以设置多个约束哦
public static void Show3<T>(T t) where T : People, Iinterface1, Iinterface2,new()//多约束类型 { Console.WriteLine("参数类型是:{0}", typeof(T)); }多约束类型需要注意 他是由 一个类+多个接口+一个new() 这种顺序组成的,可以减少,但是顺序不能乱
0 0
- asp.net 泛型、泛型约束
- Asp.Net约束注册用户名密码规则
- .net 泛型 泛型编程之泛型类、泛型方法、泛型约束
- 泛型 泛型的约束
- ASP.NET MVC 之如何创建自定义路由约束
- asp.net泛型实例
- asp.net中的泛型
- 泛型约束
- C#泛型约束
- c#泛型约束
- 泛型约束
- 泛型约束
- where 泛型约束
- 泛型约束
- 泛型的约束
- C#泛型约束
- 泛型约束应用
- 泛型约束
- C++中substr函数的用法
- iwebshop 增删改查
- 弹性效果
- .NET framework 4.0 安装失败回滚
- 数据库水平切分的实现原理解析---分库,分表,主从,集群,负载均衡器
- asp.net 泛型、泛型约束
- Android Http请求方法汇总
- Mac环境变量配置相关
- jvm 堆栈方法区数据存放和操作流程
- 数字签名
- 使用java代码发送邮箱
- 全志A20控制GPIO口的一种方法:
- JavaScript DOM和节点以及获取元素的常用方法
- 页面在手机上测试的方法