C#泛型使用介绍

C# 泛型介绍

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

主要特点和优势:
  1. 代码复用和类型安全

    • 泛型允许我们编写一次代码,适用于多种数据类型,从而提高了代码的复用性和可维护性。
    • 在编译时进行类型检查,避免了运行时类型转换错误,提供了更好的类型安全性。
  2. 性能优化

    • 泛型类和方法在运行时会被编译为特定的数据类型,因此不会引入装箱和拆箱的开销,从而提高了性能。
  3. 可读性和灵活性

    • 使用泛型使得代码更加清晰和简洁,因为可以在一个地方定义通用算法或数据结构。
    • 可以通过指定不同的类型参数来适应各种业务需求,提高了代码的灵活性。

使用案例介绍两个泛型的应用场景:

1. 泛型集合类 List<T>
using System;
using System.Collections.Generic;

class Program
{
    static void Main(string[] args)
    {
        // 创建一个整数类型的 List
        List<int> numbers = new List<int>();
        numbers.Add(1);
        numbers.Add(2);
        numbers.Add(3);

        // 创建一个字符串类型的 List
        List<string> names = new List<string>();
        names.Add("Alice");
        names.Add("Bob");
        names.Add("Charlie");

        // 遍历并打印整数 List
        Console.WriteLine("整数列表:");
        foreach (int num in numbers)
        {
            Console.WriteLine(num);
        }

        // 遍历并打印字符串 List
        Console.WriteLine("\n字符串列表:");
        foreach (string name in names)
        {
            Console.WriteLine(name);
        }
    }
}

2. 泛型方法示例
using System;

class Program
{
    static void Main(string[] args)
    {
        // 调用泛型方法 Swap
        int a = 1, b = 2;
        Console.WriteLine($"交换前:a = {a}, b = {b}");
        Swap(ref a, ref b);
        Console.WriteLine($"交换后:a = {a}, b = {b}");

        // 调用泛型方法 Max
        int maxInt = Max(5, 3);
        Console.WriteLine($"最大值是:{maxInt}");
    }

    // 泛型方法:交换两个变量的值
    static void Swap<T>(ref T a, ref T b)
    {
        T temp = a;
        a = b;
        b = temp;
    }

    // 泛型方法:返回两个值中较大的一个
    static T Max<T>(T x, T y) where T : IComparable<T>
    {
        return x.CompareTo(y) > 0 ? x : y;
    }
}

相关推荐

  1. C#使用介绍

    2024-07-17 17:18:02       28 阅读
  2. c#(Generic)

    2024-07-17 17:18:02       53 阅读
  3. c# 定义

    2024-07-17 17:18:02       34 阅读
  4. C# 分析

    2024-07-17 17:18:02       27 阅读
  5. C#

    2024-07-17 17:18:02       26 阅读
  6. C# ——

    2024-07-17 17:18:02       23 阅读

最近更新

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

    2024-07-17 17:18:02       67 阅读
  2. Could not load dynamic library ‘cudart64_100.dll‘

    2024-07-17 17:18:02       72 阅读
  3. 在Django里面运行非项目文件

    2024-07-17 17:18:02       58 阅读
  4. Python语言-面向对象

    2024-07-17 17:18:02       69 阅读

热门阅读

  1. 06 - FFmpeg 提取 YUV420P 视频裸数据

    2024-07-17 17:18:02       18 阅读
  2. 识别视频中的人数并统计出来

    2024-07-17 17:18:02       24 阅读
  3. 超详细Python教程——异步任务和定时任务

    2024-07-17 17:18:02       21 阅读
  4. opencv—常用函数学习_“干货“_7

    2024-07-17 17:18:02       23 阅读
  5. Nginx

    2024-07-17 17:18:02       20 阅读
  6. 大模型日报 2024-07-15

    2024-07-17 17:18:02       20 阅读
  7. 使用 CSS 实现透明效果

    2024-07-17 17:18:02       20 阅读
  8. HTML常见标签(一)

    2024-07-17 17:18:02       23 阅读
  9. 网络编程:IO多路复用(五个IO模型)

    2024-07-17 17:18:02       23 阅读
  10. 【防抖工具库 es-toolkit】

    2024-07-17 17:18:02       26 阅读