C# 泛型简介

举报
陈言必行 发表于 2021/08/13 23:56:52 2021/08/13
【摘要】 C# 泛型(Generic) 定义: 泛型允许我们延迟编写类或方法中的编程元素的数据类型的规范,直到实际在程序中使用它的时候。也就是说,泛型是可以与任何数据类型一起工作的类或方法。 泛型的使用:当我们的类/方法不需要关注调用者传递的实体是什么,这个时候就可以使用泛型。 泛型的特性: 使用泛型是一种增强程序功能的技术,具体表现在以下几个方面: 它有助于实现代码...

C# 泛型(Generic)

定义: 泛型允许我们延迟编写类或方法中的编程元素的数据类型的规范,直到实际在程序中使用它的时候。也就是说,泛型是可以与任何数据类型一起工作的类或方法。

泛型的使用:当我们的类/方法不需要关注调用者传递的实体是什么,这个时候就可以使用泛型。


泛型的特性:
使用泛型是一种增强程序功能的技术,具体表现在以下几个方面:

  • 它有助于实现代码的重用、保护类型的安全以及提高性能。
  • 我们可以创建泛型集合类。在 System.Collections.Generic 命名空间中包含了一些新的泛型集合类。这些类替代 System.Collections 中的集合类。
  • 我么可以自定义:泛型接口、泛型类、泛型方法、泛型事件和泛型委托。
  • 我们还可以对泛型类进行约束以访问特定数据类型的方法。
  • 关于泛型数据类型中使用的类型的信息可在运行时通过使用反射获取。

泛型限定条件

  • 结构(类型参数必须是值类型。可以指定除 Nullable 以外的任何值类型)
  • 类 (类型参数必须是引用类型,包括任何类、接口、委托或数组类型)
  • new() (类型参数必须具有无参数的公共构造函数。当与其他约束一起使用时new() 约束必须最后指定)
  • <接口名称> 类型参数必须是指定的接口或实现指定的接口。可以指定多个接口约束。约束接口也可以是泛型的。
using System;

namespace _1_3_1泛型Generic
{ //利用泛型创建一个类似动态数组的类 class DyArray<T> { private T[] arr; //泛型数组 public int Lenght;   //数组大小 //构造函数 public DyArray(int size){ this.Lenght = size; arr = new T[size]; } //向指定位置添加元素 public void Add(int i,T t) { if (i < arr.Length && i >= 0) { arr[i] = t; } else { Console.WriteLine("您输入的索引不合理"); } } //移除指定位置元素 public void Remove(int i) { if (i<arr.Length && i>=0) { arr[i] = default(T); } else { Console.WriteLine("您输入的索引不合理"); } } /// <summary> /// 遍历当前数组元素  /// </summary> public void Ergodic() { for (int i = 0; i < arr.Length; i++) { Console.WriteLine(arr[i]); } } } class Program { static void Main(string[] args) { DyArray<int> dy = new DyArray<int>(3); dy.Add(0, 1); dy.Add(1, 11); dy.Add(2, 111); dy.Add(3, 1111); dy.Ergodic(); DyArray<string> dy2 = new DyArray<string>(5); dy2.Add(0, "chen"); dy2.Add(1, "ya"); dy2.Ergodic(); Console.ReadKey(); } }
}


  
 
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
  • 31
  • 32
  • 33
  • 34
  • 35
  • 36
  • 37
  • 38
  • 39
  • 40
  • 41
  • 42
  • 43
  • 44
  • 45
  • 46
  • 47
  • 48
  • 49
  • 50
  • 51
  • 52
  • 53
  • 54
  • 55
  • 56
  • 57
  • 58
  • 59
  • 60
  • 61
  • 62
  • 63
  • 64
  • 65
  • 66
  • 67
  • 68
  • 69
  • 70
  • 71
  • 72
  • 73
  • 74
  • 75
  • 76
  • 77
  • 78

运行结果:
result


泛型委托
C# 系统自带的两个委托Action,Func就使用了泛型的形式,

  //利用泛型,定义没有返回值,带参数的委托 Action<string> method2 = Show; method2("CZHENYA"); //===========================================

//func 中的泛型是指定的方法的返回值类型,, Func<int> method = Show1; Console.WriteLine("方法的返回值是:"+ method());

  
 
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11

文章来源: czhenya.blog.csdn.net,作者:陈言必行,版权归原作者所有,如需转载,请联系作者。

原文链接:czhenya.blog.csdn.net/article/details/80287384

【版权声明】本文为华为云社区用户转载文章,如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。