C# —— 泛型

泛型: 广泛的类型 一般用于传递类型的
泛型的命名规范:以T开头的单词命名,

<> 中间类型就是传入泛型
<int> 整形的泛型 
<T> 泛型类型

List<string> list = new List<string>();
Dictionary<int, int> dic = new Dictionary<int, int>();
Dictionary<string, string> dic1 = new Dictionary<string, string>();

 泛型使用在方法定义上,
调用泛型方法 通过<>将类型的实参进行传递,
对应的位置泛型形参就是这个类型

 Test<int>(1);// T 传递的是int类型 此次参数必须是int类型
 Test<string>("a");// T传递的string 此次参数必须是字符串类型
 // Test(1); 泛型方法调用时候简化写法 系统自动推断类型
 // Test("a"); 

 2 调用带两个泛型参数的方法 Test1 传递的类型是一个

Test1<int>(10, new int[] { 10 });

3 调用Test2方法 传入两个泛型类型 参数个数是2个

Test2<int, string>(10, "a");
Test2<int, int>(10, 10);

重点: 泛型方法调用的时候 由传入的类型坚定着实参的类型,实参类型决定着形参的类型,所以形参作用就进而体现了,参数类型不固定 由方法调用决定

例子 封装一个泛型方法 有返回值 泛型数组 ,参数传递一个任意类型的数据和数字 转化为对应长度的数组,并且数组里面存储的是传递的类型
            Test4(10,20)整形数组  Test4("a",20)字符串数组 

int[] aa = Test3<int>(10, 10);
string[] ab = Test3<string>("a", 10);
Console.WriteLine(string.Join(",",aa));
Console.WriteLine(string.Join(",", aa));

1 泛型方法 可以传入整形的数字,也可以传入字符串 也可以传入数组
        // 定义方式: 方法名字后面添加<T> 方法参数类型改为T

public static void Test<T>(T a)
{
    Console.WriteLine(a);
}

2 定义带两个泛型参数的反省方法
        // 泛型数组: 数组可以传递整形数组 也可以是字符串数组 T[] array

public static void Test1<T>(T a, T[] array)
{
    Console.WriteLine(a + ","+ array[0]);
}

3 定义泛型方法 传递两个泛型参数,两个参数类型不一样 可以使用 Ta 以后可以 T1... 以后可以 T1...T2...T3

 public static void Test2<T,T1>(T a,T1 b)
 {
     
 }

4 对应的调用

public static T[] Test3<T>(T a,int count)
{
    T[] r = new T[count];// 长度为第二个参数
    for (int i = 0; i < count; i++)
    {
        r[i] = a;// 所有的元素都是a
    }
    return r;
}

相关推荐

  1. c#(Generic)

    2024-07-18 00:26:03       53 阅读
  2. c# 定义

    2024-07-18 00:26:03       34 阅读
  3. C# 分析

    2024-07-18 00:26:03       27 阅读
  4. C#

    2024-07-18 00:26:03       25 阅读
  5. C# ——

    2024-07-18 00:26:03       23 阅读
  6. C++ STL算法

    2024-07-18 00:26:03       37 阅读

最近更新

  1. docker php8.1+nginx base 镜像 dockerfile 配置

    2024-07-18 00:26:03       66 阅读
  2. Could not load dynamic library ‘cudart64_100.dll‘

    2024-07-18 00:26:03       70 阅读
  3. 在Django里面运行非项目文件

    2024-07-18 00:26:03       57 阅读
  4. Python语言-面向对象

    2024-07-18 00:26:03       68 阅读

热门阅读

  1. 利用Postman进行自动化测试:从基础到进阶

    2024-07-18 00:26:03       20 阅读
  2. 河南萌新联赛2024第(一)场:河南农业大学

    2024-07-18 00:26:03       20 阅读
  3. ZC2205-24V500mAUltralow-Quiescent-Current LDO

    2024-07-18 00:26:03       16 阅读
  4. golang项目中gorm框架的配置和具体使用

    2024-07-18 00:26:03       20 阅读
  5. 使用Django框架实现音频上传功能

    2024-07-18 00:26:03       20 阅读
  6. 38 IRF+链路聚合+ACL+NAT组网架构

    2024-07-18 00:26:03       21 阅读
  7. Resilience4j 实现接口限流

    2024-07-18 00:26:03       22 阅读
  8. ld,GNU 链接器介绍以及命令行参数详解

    2024-07-18 00:26:03       17 阅读
  9. Windows 点云生成二维栅格图 [附C++完整代码实现]

    2024-07-18 00:26:03       19 阅读
  10. go recover

    2024-07-18 00:26:03       22 阅读