C# 如何使用泛型方法和泛型类_C# 泛型方法与泛型类使用教程

泛型方法和泛型类可提升代码复用与类型安全,如定义PrintValue(T value)自动推断类型,Swap实现值交换,SimpleStack支持多类型操作,通过where约束限定类型条件,Pair类关联不同数据类型,避免装箱拆箱,增强性能。

C# 如何使用泛型方法和泛型类_C# 泛型方法与泛型类使用教程

泛型c# 中非常强大的特性,它允许我们编写可重用、类型安全的代码。通过使用泛型方法和泛型类,可以在不指定具体类型的情况下定义算法数据结构,从而提高代码的灵活性和性能。本文将介绍如何在 C# 中使用泛型方法与泛型类,并提供实用示例。

泛型方法的使用

泛型方法是指在其定义中包含类型参数的方法。类型参数用尖括号 T 表示,运行时由实际传入的类型自动推断。

定义一个简单的泛型方法:

public Static void PrintValue(T value)
{
   console.WriteLine($”Value: {value}, Type: {typeof(T)}”);
}

调用该方法时无需显式指定类型,编译器会根据传入参数自动推断:

PrintValue(100); // 输出: Value: 100, Type: System.Int32
PrintValue(“Hello”); // 输出: Value: Hello, Type: System.String

也可以手动指定类型:

PrintValue(42);

泛型方法常用于工具类中,例如交换两个变量的值:

public static void Swap(ref T a, ref T b)
{
   T temp = a;
   a = b;
   b = temp;
}

调用方式:

int x = 10, y = 20;
Swap(ref x, ref y);
Console.WriteLine($”{x}, {y}”); // 输出: 20, 10

泛型类的定义与使用

泛型类允许类的操作针对多种类型保持一致。最常见的例子是集合类,如 ListDictionary 等。

自定义一个简单的泛型类:

public class SimpleStack
{
   private List items = new List();

   public void Push(T item)
   {
      items.Add(item);
   }

   public T Pop()
   {
      if (items.count == 0)
         throw new InvalidOperationException(“Stack is empty.”);
      T item = items[items.Count – 1];
      items.RemoveAt(items.Count – 1);
      return item;
   }

   public int Count => items.Count;
}

使用这个泛型栈:

var stringStack = new SimpleStack();
stringStack.Push(“First”);
stringStack.Push(“Second”);
Console.WriteLine(stringStack.Pop()); // 输出: Second

C# 如何使用泛型方法和泛型类_C# 泛型方法与泛型类使用教程

无阶未来模型擂台/AI 应用平台

无阶未来模型擂台/AI 应用平台,一站式模型+应用平台

C# 如何使用泛型方法和泛型类_C# 泛型方法与泛型类使用教程35

查看详情 C# 如何使用泛型方法和泛型类_C# 泛型方法与泛型类使用教程

var intStack = new SimpleStack();
intStack.Push(1);
intStack.Push(2);
Console.WriteLine(intStack.Pop()); // 输出: 2

泛型类的好处在于:一次定义,多类型复用,且避免了装箱拆箱带来的性能损耗。

约束泛型类型

有时我们需要对泛型参数做限制,比如要求它必须实现某个接口或具有无参构造函数。这时可以使用 泛型约束(where 关键字)。

常见约束包括:

  • where T : class —— 必须是引用类型
  • where T : Struct —— 必须是值类型
  • where T : IComparable —— 必须实现指定接口
  • where T : new() —— 必须有无参构造函数
  • where T : MyBaseClass —— 必须继承自某个类

示例:只允许引用类型并具备无参构造函数:

public class ServiceFactory where T : class, new()
{
   public T CreateInstance()
   {
      return new T();
   }
}

这样就能确保 new T() 是合法操作。

多个泛型参数的使用

泛型支持多个类型参数,适用于键值对、映射等场景。

例如定义一个简单的键值容器:

public class Pair
{
   public TFirst First { get; set; }
   public TSecond Second { get; set; }

   public Pair(TFirst first, TSecond second)
   {
      First = first;
      Second = second;
   }
}

使用方式:

var pair = new Pair(“Age”, 25);
Console.WriteLine($”{pair.First}: {pair.Second}”); // 输出: Age: 25

这种设计在需要关联不同类型数据时非常有用。

基本上就这些。掌握泛型方法和泛型类的使用,能让你写出更高效、更安全的 C# 代码。关键是理解类型参数的作用以及如何通过约束控制可用操作。实际开发中多结合集合、工厂模式、服务注册等场景练习,自然就能熟练运用。

暂无评论

发送评论 编辑评论


				
上一篇
下一篇
text=ZqhQzanResources