本文实例分析了.NET基础之自定义泛型。分享给大家供大家参考。具体分析如下:
在.NET中泛型使用非常频繁,在控制台应用程序中,默认的引入了System.Collection.Generics名称空间,其中就提供了我们经常使用的泛型:List<T>和Dictionary<T>,相信用过它们的都知道它们的强大。还有一种我们经常使用的简单的泛型:System.Nullable<T>,即可空类型。我们可以:
System.Nullable<int> nullableInt;
声明一个可空的int类型,由于C#语法对这个做了简化通常我们都不这样写,而是这样写:
int? nullableInt
下面重点介绍一下如何自定义泛型。
定义泛型类
创建泛型类是需要在类定义中用尖括号语法:
可以把类型用在类成员的返回类型,方法参数类型等,例如:
注意如果不能假定提供了什么类型。下面的代码不能执行:
因为我们不知道T1是否有公有的默认构造函数。
default关键字
如果我们定义了一个泛型的字段,我们想在构造函数中初始化它,但是我们不知道它的引用类型还是值类型,那么default就派上用处了:
约束类型
在定义泛型的时候我们可以对类型进行约束,通过where关键字实现:
//Cow Animal的子类,实现虚方法
public class Cow:Animal
{
public Cow(string name) :
base(name)
{
}
public override void MakeANoise()
{
Console.WriteLine(\"{0} says \'moo!\'\", name);
}
}
//Chicken类,Animal子类
public class Chicken:Animal
{
public Chicken(string name)
: base(name)
{ }
public override void MakeANoise()
{
Console.WriteLine(\"{0} says \'cluck\'\", name);
}
}
//Cow的子类,有一个自己的方法Fly
class SuperCow : Cow
{
public SuperCow(string name) : base(name)
{
}
public void Fly()
{
Console.WriteLine(\"{0} is flying!\", name);
}
public override void MakeANoise()
{
Console.WriteLine(\"{0} says \'I am supercow!\'\", name);
}
}
本文地址:https://www.stayed.cn/item/23465
转载请注明出处。
本站部分内容来源于网络,如侵犯到您的权益,请 联系我