在C#编程中,嵌套类和泛型是两个非常强大的特性。当它们结合在一起时,可以构建出高度灵活且类型安全的代码结构。本文将详细讲解C#嵌套类的泛型参数传递,即使你是编程小白,也能轻松理解并掌握这一高级技巧。
嵌套类(Nested Class)是指定义在另一个类内部的类。外部类称为“外层类”或“包含类”,内部类称为“嵌套类”。嵌套类可以访问外层类的私有成员,这在封装和组织代码时非常有用。
泛型(Generics)允许你在定义类、接口或方法时使用类型参数,从而在编译时提供类型安全,并避免装箱/拆箱带来的性能损失。例如:List<T> 就是一个典型的泛型集合。
在C#中,嵌套类可以独立拥有自己的泛型参数,也可以继承或使用外层类的泛型参数。下面我们通过几个例子来说明不同的传递方式。
嵌套类可以直接访问外层类的泛型类型参数,无需重新声明:
public class OuterClass<T>{ private T value; public OuterClass(T val) { value = val; } // 嵌套类直接使用外层类的泛型参数 T public class NestedClass { public void PrintOuterValue(OuterClass<T> outer) { Console.WriteLine(outer.value); } }}// 使用示例class Program{ static void Main() { var outer = new OuterClass<string>("Hello C#!"); var nested = new OuterClass<string>.NestedClass(); nested.PrintOuterValue(outer); // 输出: Hello C#! }} 嵌套类也可以定义自己的泛型参数,与外层类的泛型参数无关:
public class Container<T>{ public class Item<U> { public T ContainerValue { get; set; } public U ItemValue { get; set; } public void Display() { Console.WriteLine($"Container: {ContainerValue}, Item: {ItemValue}"); } }}// 使用示例class Program{ static void Main() { var item = new Container<int>.Item<string> { ContainerValue = 42, ItemValue = "泛型嵌套" }; item.Display(); // 输出: Container: 42, Item: 泛型嵌套 }} 最灵活的方式是嵌套类既使用外层类的泛型参数,又定义自己的泛型参数:
public class Database<TConnection>{ public class Repository<TEntity> { public TConnection Connection { get; set; } public List<TEntity> Entities { get; set; } = new List<TEntity>(); public void Save() { Console.WriteLine($"Saving {Entities.Count} entities using {typeof(TConnection).Name}"); } }}// 使用示例class Program{ static void Main() { var repo = new Database<SqlConnection>.Repository<User> { Connection = new SqlConnection(), Entities = new List<User> { new User("Alice"), new User("Bob") } }; repo.Save(); // 输出: Saving 2 entities using SqlConnection }}public class SqlConnection { }public class User{ public string Name { get; } public User(string name) => Name = name;} OuterClass<T>.NestedClass<U>,注意中间的点号和泛型尖括号。通过本文,我们深入学习了C#嵌套类的泛型参数传递机制。无论是复用外层泛型参数,还是定义独立的泛型参数,C#都提供了极大的灵活性。掌握这些技巧,能让你写出更优雅、可维护性更高的代码。
关键词回顾:C#嵌套类、泛型参数传递、C#泛型教程、嵌套泛型类。
本文由主机测评网于2025-12-05发表在主机测评网_免费VPS_免费云服务器_免费独立服务器,如有疑问,请联系我们。
本文链接:https://www.vpshk.cn/2025123081.html