浅谈C#中的泛型
1、什么是泛型?
泛型是程序设计语言的一种特性。允许程序员在强类型程序设计语言中编写
代码时定义一些可变部分,那些部分在使用前必须作出指明。各种程序设计语言和其编译器、运行环境对泛型的支持均不一样。将类型参数化以达到代码复用提高软件开发工作效率的一种数据类型。泛型类是引用类型,是堆对象,主要是引入了类型参数这个概念。
2、泛型的运用
3、泛型的类型
大概有以下几个集合类型:
(1). List,这是我们应用最多的泛型种类,它对应ArrayList集合。
(2). Dictionary,这也是我们平时运用比较多的泛型种类,对应Hashtable集合。
(3). Collection对应于CollectionBase
(4). ReadOnlyCollection 对应于ReadOnlyCollectionBase,这是一个只读的集合。
(5). Queue,Stack和SortedList,它们分别对应于与它们同名的非泛型类。
4、泛型的简单举例
这个类是Person类的操作类,可以自由的增加或删除Person类.如果现在要为其他的类写一个功能与这个类一样的操作类,相信只需要将Person类替换一下就可以了.不过在了解泛型之后你就可以这样来用.
List<Person> persons = new List<Person>();
persons.Add(new Person());
Person person = persons[0];
比如,如果要将Person类换成Employee类,只需要像这样写.
List<Employee> employees= new List<Employee>();
employees.Add(new Employee());
Employee employee= employees[0];
List是C#中已经定义好的泛型类,现在我们可以自己定义它.
5、运用到实例中,使用泛型和非泛型的举例
class Program
{
static void Main(string[] args)
{
#region 使用非泛型ArrayList
/*ArrayList array = new ArrayList();
array.Add(10);//int是值类型,而Add方法只接受引用类型(object),所以对值类型进行了装箱操作(object(10))
array.Add("刘能");
array.Add(DateTime.Now);//DateTime是值类型,而Add方法只接受引用类型(object),所以对值类型进行了装箱操作
Person p = new Person();
p.Name = "藤香";
p.Age = 20;
array.Add(p);
//double mianji = Math.PI * (int)array[0]*(int)array[0];
double mianji = Math.PI * Convert.ToInt32(array[0]) * Convert.ToInt32(array[0]);
Int32 num = 10;
Console.WriteLine(num + num);
Console.WriteLine(mianji);
//foreach (object obj in array)
//{
// Console.WriteLine(obj);
//}*/
#endregion
#region 使用泛型List,凡是能够使用数组的地方,都可以使用list,哪怕你是多维数组
List<string> list = new List<string>();
list.Add("10");
#endregion
Console.ReadKey();
}
}
class Person
{
public string Name { get; set; }
public int Age { get; set; }
}
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· 开发者必知的日志记录最佳实践
· SQL Server 2025 AI相关能力初探
· Linux系列:如何用 C#调用 C方法造成内存泄露
· AI与.NET技术实操系列(二):开始使用ML.NET
· 无需6万激活码!GitHub神秘组织3小时极速复刻Manus,手把手教你使用OpenManus搭建本
· C#/.NET/.NET Core优秀项目和框架2025年2月简报
· Manus爆火,是硬核还是营销?
· 终于写完轮子一部分:tcp代理 了,记录一下
· 【杭电多校比赛记录】2025“钉耙编程”中国大学生算法设计春季联赛(1)