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;
    }
}
相关推荐
zhang9880000几秒前
JavaScript 核心原理深度解析-不停留于表面的VUE等的使用!
开发语言·javascript·vue.js
Fanxt_Ja2 小时前
【JVM】三色标记法原理
java·开发语言·jvm·算法
蓝婷儿2 小时前
6个月Python学习计划 Day 15 - 函数式编程、高阶函数、生成器/迭代器
开发语言·python·学习
绿荫阿广2 小时前
互联网不景气了那就玩玩嵌入式吧,用纯.NET开发并制作一个智能桌面机器人(五):使用.NET为树莓派开发Wifi配网功能
c#·.net
love530love2 小时前
【笔记】在 MSYS2(MINGW64)中正确安装 Rust
运维·开发语言·人工智能·windows·笔记·python·rust
slandarer3 小时前
MATLAB | 绘图复刻(十九)| 轻松拿捏 Nature Communications 绘图
开发语言·matlab
狐凄3 小时前
Python实例题:Python计算二元二次方程组
开发语言·python
roman_日积跬步-终至千里3 小时前
【Go语言基础【3】】变量、常量、值类型与引用类型
开发语言·算法·golang
roman_日积跬步-终至千里3 小时前
【Go语言基础】基本语法
开发语言·golang·xcode
Felven3 小时前
C. Basketball Exercise
c语言·开发语言