VB.net 2010 视频教程 VB.net 2010 视频教程 python基础视频教程
SQL Server 2008 视频教程 c#入门经典教程 Visual Basic从门到精通视频教程
当前位置:
首页 > Python基础教程 >
  • C#教程之泛型的多种应用(2)

泛型的约束

在泛型类中,有个特别的约束可供我们使用。

当我们不显示的声明时,这个约束不存在。但当我们显示的声明的时候,这个约束就会执行。

下面,我们来看看这个特别的约束。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
public static void Excute()
{
    Generic<FanXing> gFanXing = new Generic<FanXing>();
    Generic<Base> gFanXingBase = new Generic<Base>();
    //Generic<string> gs = new Generic<string>(); 这样定义会报错
}
public class Generic<T> where T : Base
{
    public T Name = default(T);
}
public class Base 
{
    public string Name { getset; }
}
public class FanXing : Base
{
    public new string Name { getset; }
}

如上面代码所示,【where T : Base】就是这个特别的约束。

当显示声明这个约束的时候,定义会限制泛型的类型。

什么是限制泛型的类型呢?

很简单,泛型T,是泛指某一个类型。我们在定义泛型类时,还需显示的指定类型,此时我们显示指定的类型,要受这个限制。

这个限制就是指【where T : Base】。

它的限制是,要求我们指定的类型T必须是Base,或者该类型继承自Base,如FanXing类。

泛型的函数

在C#中,泛型不仅可以用于类,还可以直接用于函数。

具体使用方式如下:

1
2
3
4
5
6
7
8
9
10
11
12
public static void Excute()
{
    GenericFunc gf = new GenericFunc();
    gf.FanXingFunc<FanXing>(new FanXing() { Name="Kiba518"});
}
public class GenericFunc
{
    public void FanXingFunc<T>(T obj)
    {
        Console.WriteLine(obj.GetType());
    }
}

相关教程