• 欢迎访问搞代码网站,推荐使用最新版火狐浏览器和Chrome浏览器访问本网站!
  • 如果您觉得本站非常有看点,那么赶紧使用Ctrl+D 收藏搞代码吧

C#语法之泛型的多种应用

c# 搞代码 4年前 (2022-01-09) 12次浏览 已收录 0个评论

本篇文章主要介绍泛型的应用。

泛型是.NET  work 2.0 版类库就已经提供的语法,主要用于提高代码的可重用性、类型安全性和效率。

泛型的定义

下面定义了一个普通类和一个泛型类,我们可以明确看到泛型类和普通类最大的区别就是多了一个<T>。

所以,这个<T>就标记了,这个类是泛型类。其中这个T,也可以写成A,B,C,D或其他字符。

public class Generic
{
  public String Name;
}
public class Generic<T>
{
  public T Name;
}

泛型,顾名思义,就是泛指的类型。好比男人,女人,白人,黑人,可以泛称为【人】。

但类型只能是一个类型。 那么泛型和类型之间是什么关系呢?

其实很简单,泛型在定义的时候,是泛指类型;在使用的时候,就需要被指定,到底使用哪个类型。

即,使用时,就不在是泛指类型,而是特定类型。

好比,定义时,定义了一个人。但在使用时,必须明确指定,到底是黑人还是白人。

泛型的使用

泛型类跟普通类的使用方式一样,都需要实例化对象,再由对象来调用内部的属性或方法。

下面代码实例化了泛型Generic,实例化时,还指定了该泛型Generic的指定类型为String。

所以要给泛型Ge本文来源gaodai#ma#com搞@@代~&码*网2neric的属性Name赋值,就需要赋值字符串类型的值。

public static void Excute()
{
  Generic<String> gs = new Generic<String>();
  gs.Name = "Kiba518";
}

下面代码定义了一个Int类型的泛型Generic。

public static void Excute()
{
  Generic<int> gs = new Generic<int>();
  gs.Name = 518;
}

泛型的默认值

泛型的默认值,如下面代码所示。需要使用default(T)来赋值。

不管泛型到底是String,int,bool或者是一个Class类型,都可以被自动赋值。

public static void Excute()
{
  Generic<int> gs = new Generic<int>();
  gs.Name = 518;
  Generic<Task> gsTask = new Generic<Task>();
  gsTask.Name = new Task(()=> {
    Console.WriteLine("Kiba518");
  });
}
 
public class Generic<T>
{
  public T Name = default(T);
}

泛型的约束

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

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

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

public static void Excute()
{
  Generic<FanXing> gFanXing = new Generic<FanXing>();
  Generic< > gFanXing = new Generic< >();
  //Generic<string> gs = new Generic<string>(); 这样定义会报错
}
public class Generic<T> where T :
{
  public T Name = default(T);
}
public class  
{
  public string Name { get; set; }
}
public class FanXing :
{
  public new string Name { get; set; }
}

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

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

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

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


搞代码网(gaodaima.com)提供的所有资源部分来自互联网,如果有侵犯您的版权或其他权益,请说明详细缘由并提供版权或权益证明然后发送到邮箱[email protected],我们会在看到邮件的第一时间内为您处理,或直接联系QQ:872152909。本网站采用BY-NC-SA协议进行授权
转载请注明原文链接:C#语法之泛型的多种应用

喜欢 (0)
[搞代码]
分享 (0)
发表我的评论
取消评论

表情 贴图 加粗 删除线 居中 斜体 签到

Hi,您需要填写昵称和邮箱!

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址