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

泛型是C#中非常强大的功能,它允许我们编写可重用、类型安全的代码。通过使用泛型方法和泛型类,可以在不指定具体类型的情况下定义算法或数据结构,从而提高代码的灵活性和性能。本文将介绍如何在 C# 中使用泛型方法与泛型类,并提供实用的示例。泛型方法的使用
泛型方法是指在其定义中包含类型参数的方法。类型参数用尖语法 T表示,运行时由实际得出的类型自动推断。
定义一个简单的泛型方法:public static void PrintValue(T value){ Console.WriteLine($"Value: {value}, Type: {typeof(T)}");}
调用该方法时需要显式指定类型,编译器会根据判断参数自动推断:PrintValue(100); // 输出: Value: 100, Type: System.Int32PrintValue("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泛型类的定义与使用
泛型类允许类的操作针对多种类型保持一致。最常见的例子是集合类,如列表、字典等。
自定义一个简单的泛型栈类: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("堆栈为空。"); T item = items[items.Count - 1]; items.RemoveAt(items.Count - 1); return item; }
public int Count =gt; items.Count;}
使用这个泛型栈:var stringStack = new SimpleStack();stringStack.Push("First");stringStack.Push("Second");Console.WriteLine(stringStack.Pop()); // 输出:Second
无阶未来模型擂台/AI应用平台
无阶未来模型擂台/AI应用平台,半模型应用平台35查看详情
var intStack = new SimpleStack();intStack.Push(1);intStack.Push(2);Console.WriteLine(intStack.Pop()); // 输出: 2
泛型类的好处是:一次定义,多类型复用,且避免了装箱拆箱带来的性能损失。约束泛型类型
有时我们需要对泛型参数做限制,比如要求它必须实现某些接口或具有无参重构函数。泛型约束(其中关键字)。
常见约束包括: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 {获取;设置; }
public Pair(TFirst first, TSecond secondary) { First = first; Second = secondary; }}
使用方式:varpair = new Pair("Age", 25);Console.WriteLine($"{pair.First}:{pair.Second}"); // 输出: Age: 25
这种设计在需要关联不同类型数据的时候非常有用。
基本上就这些。掌握泛型方法和泛型类的使用,可以让你写出更高效、更安全的C#代码。关键是理解类型参数的作用以及如何通过约束控制获得可用的操作。实际开发中多结合集合、工厂模式、服务注册等场景练习,自然可以巧妙运用。
以上就是如何C#使用泛型方法和泛型类_C#泛型方法与泛型类使用教程的详细,更多请关注乐哥常识网其他相关文章!微服务中的配置中心如何选型? C#中的记录类型在不可变数据模型中的优势? C#中如何使用EF Core的复杂类型?如何定义? C#中的可空引用类型如何避免空指针异常? ASP.NET Core中的模型验证提供程序如何扩展?
