标签:c#中的各种泛型
上一篇文章简单了解了一下强类型以及泛型的知识。其实,在.net类库中有很多的泛型定义,最典型也是我们用的最多的就是List<>和Dictionary<Tkey,Tvalue>两个泛型集合。这只是微软我们提供的,在实际开发中,我们很多时候还需要自己定义一些泛型,今天就接着上次的内容来具体学习一下泛型的各种定义。
一、泛型类
1.定义
//泛型类,泛型的好处,还是代码重用。
// where yzk : struct泛型约束
//where T : struct表示只能是值类型
public class MyClass<yzk, sk, jk, nrg, yhb>
where yzk : struct //限定yzk只能是值类型
where sk : class, IComparable //限定sk只能是引用类型
where jk : ICollection, new() //表示jk必须是实现了ICollection接口的类型
where yhb : nrg
{
public yzk[] _data;
public sk _ss;
public jk _jj;
public MyClass(params yzk[] objs)
{
this._data = objs;
}
public void SayHi(yzk msg)
{
Console.WriteLine(msg);
}
public void Show()
{
foreach (var item in _data)
{
Console.WriteLine(item);
}
}
}2.泛型类的实例化 static void Main(string[] args)
{
MyClass<string> mc = new MyClass<string>("aaa", "bbbb", "ccc");
mc.SayHi("大家好。");
MyClass<int> mcc = new MyClass<int>(1, 2, 3, 4);
mcc.Show();
Console.ReadKey();
}
二、泛型接口
1.定义
public interface IFlyable<T>
{
void Fly(T msg);
}2.接口的继承
类实现接口的时候有两种情况:该类是普通的类、该类也是泛型类
普通类
public class MyClass : IFlyable<string>
{
#region IFlyable<string> 成员
public void Fly(string msg)
{
throw new NotImplementedException();
}
#endregion
}
public class MyClass1 : IFlyable<int>
{
#region IFlyable<int> 成员
public void Fly(int msg)
{
throw new NotImplementedException();
}
#endregion
}
泛型类
public class MyClass2<yzk> : IFlyable<yzk>
{
#region IFlyable<T> 成员
public void Fly(yzk msg)
{
throw new NotImplementedException();
}
#endregion
}
三、泛型方法
public void SayHi<T>(T msg)
{
Console.WriteLine(msg);
} //mc.SayHi<int>(100);
// mc.SayHi<string>("aaaaaaaaaaaaaaaa");
//mc.SayHi(1000);
四、泛型委托
public delegate void Notice<T>(T name);
标签:c#中的各种泛型
原文地址:http://blog.csdn.net/ydm19891101/article/details/45601965