您的位置:首页 > 文旅 > 美景 > C# Unity 面向对象补全计划 泛型

C# Unity 面向对象补全计划 泛型

2025/2/10 8:25:42 来源:https://blog.csdn.net/2301_77947509/article/details/140848589  浏览:    关键词:C# Unity 面向对象补全计划 泛型

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

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);}

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com