码迷,mamicode.com
首页 > Windows程序 > 详细

c# 进阶1-泛型

时间:2016-04-28 17:02:57      阅读:251      评论:0      收藏:0      [点我收藏+]

标签:

1-什么是泛型

对类型的延迟声明

 1 public class GenericMethod
 2     {
 3         /// <summary>
 4         /// 泛型方法
 5         /// </summary>
 6         /// <typeparam name="T"></typeparam>
 7         /// <param name="tValue"></param>
 8         public static void Show<T>(T tValue)
 9         {
10             Console.WriteLine(" Show<T>方法 展示{0},其类型为{1},其类型2为{2}", tValue, tValue.GetType(), typeof(T));
11         }
12 
13 
14         public static void ShowSome<T, M, S, SM, SD, t, s, w, CLASS>(T tValue, M mValue)
15         {
16             Console.WriteLine(" Show<T>方法 展示{0},其类型为{1},其类型2为{2}", tValue, tValue.GetType(), typeof(T));
17         }
18     }

延迟声明在一个<T>里T,T 是一个占位符,不一定非得T

2.写法

在类后面加上<T>

public class GenericMe<T>{...}

则在其内部的函数可以直接使用T,只需要在声明时加上:

GenericMethod<T是什么类型比如:string> a = new GenericMethod<T是什么类型比如:string>

泛型函数则是:

1      public void Show<T>(T tValue)
2         {
3             Console.WriteLine(" Show<T>方法 展示{0},其类型为{1},其类型2为{2}", tValue, tValue.GetType(), typeof(T));
4         }

使用:

eg: 当前类.Show<int>(5)或者
当前类.Show(5)//可以自己推断

 

3.约束:

 接口约束:where T:Interface   必须显示的实现接口

 基类约束:where T:BaseClass 参数必须为BaseClass或者派生类

 类约束:where T:class T必须是引用类型

 值类型约束: where T:struct T必须是值类型

 构造函数约束: where T:new()  必须有默认的构造函数

 泛型类型约束: Where T:T1

4.默认值:

T t=defalut(T); 如果T是值类型,则t=0;如果T是引用类型,则t=null.

     private static T Get<T>() where T : struct//值类型
        {            
      return default(T);
        }

 

     private static T Get<T>() where T : class
        {
            return default(T);
        }

 

c# 进阶1-泛型

标签:

原文地址:http://www.cnblogs.com/anwser-jungle/p/5443190.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!