C# 泛型

发布于:2024-08-01 ⋅ 阅读:(110) ⋅ 点赞:(0)

 本文仅作学习笔记与交流,不作任何商业用途,作者能力有限,如有不足还请斧正

1.什么是泛型

泛型(Generics)是C#中的一个强大特性,允许你编写可以适用于多种数据类型的可重用代码,而不需要重复编写类或方法,泛型提供了类型参数化的能力,使得我们可以在编写代码时延迟确定具体的数据类型

说白了,泛型就是就是偷懒用的,或者说是对数据类型不定的情况下,占位用的

2.泛型广泛用于各种地方

只需要学会两个符号即可

<T>: < > 代表泛型符号,T代表占位符

T: 占位符,表示未定数据类型

下面举例说明:

2.1泛型函数

这是一个参数为泛型的泛型函数

MyFunction<int>(114514);
//泛型函数
 static void MyFunction<T>(T t )
    { 
    Console.WriteLine( t );
}

使用时别忘了在<>中填写数据类型,这样给出的数据类型就会交给T,而函数的参数就会变为int类型,图解: 

2.2泛型类

比较常见的使用方式就是泛型类的<T>和字段变量一直,不然需要合理的强制转换

当然构造函数传入的一定是和创建类时,和<T>一样的类型

Computer<string> computer = new Computer<string>("泛型数据的任意性");
Console.WriteLine(computer.Value);

public class Computer<T> {
    private  T value;
    public T Value { get { return value; } }
    public Computer(T value)
        {
        this.value = value; 
    }
}

2.3泛型接口

我的目标是给出一个泛型接口,通过子类去实现其中的属性和方法

通过子类的方法将属性的set封装一次,并将属性get出来

泛型接口

public interface Computer<T> {
    
    protected T Value {
        get;
    }
    protected T MyFunction(T value) { 
        return value; }
}

继承泛型接口

public class NoteBook : Computer<string> {

    public string Value{get;private set; }

    public string MyFunction(string s)
        { 
        Value = s;  
         return Value;    
    }
}

实现:

NoteBook noteBook = new NoteBook();
noteBook.MyFunction("泛型接口");
Console.WriteLine(noteBook.Value);

总览:

NoteBook noteBook = new NoteBook();
noteBook.MyFunction("泛型接口");
Console.WriteLine(noteBook.Value);

public interface Computer<T> {
    
    protected T Value {
        get;
    }
    protected T MyFunction(T value) { 
        return value; }
}

public class NoteBook : Computer<string> {

    public string Value{get;private set; }

    public string MyFunction(string s)
        { 
        Value = s;  
         return Value;    
    }
}

图解:

2.4泛型委托

我就以上面的MyFunction方法举例,用Func委托(一个c#提供好的,有可以参,必须有返回值的委托函数)来订阅该方法:C# 委托-CSDN博客

 public Func<string,string> func;
  public NoteBook(string s)
      {
      func += MyFunction;
      func.Invoke(s);
  }


网站公告

今日签到

点亮在社区的每一天
去签到