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;
    }
}
相关推荐
chnming198710 分钟前
STL关联式容器之map
开发语言·c++
进击的六角龙12 分钟前
深入浅出:使用Python调用API实现智能天气预报
开发语言·python
檀越剑指大厂12 分钟前
【Python系列】浅析 Python 中的字典更新与应用场景
开发语言·python
湫ccc20 分钟前
Python简介以及解释器安装(保姆级教学)
开发语言·python
程序伍六七23 分钟前
day16
开发语言·c++
wkj00128 分钟前
php操作redis
开发语言·redis·php
极客代码33 分钟前
【Python TensorFlow】进阶指南(续篇三)
开发语言·人工智能·python·深度学习·tensorflow
土豆湿39 分钟前
拥抱极简主义前端开发:NoCss.js 引领无 CSS 编程潮流
开发语言·javascript·css
界面开发小八哥1 小时前
更高效的Java 23开发,IntelliJ IDEA助力全面升级
java·开发语言·ide·intellij-idea·开发工具
qystca1 小时前
洛谷 B3637 最长上升子序列 C语言 记忆化搜索->‘正序‘dp
c语言·开发语言·算法