简而言之,是 - 一个类型从包含它的任何类型继承类型参数:这是类似事物的关键List
和许多其他场景等 - 它们T
与外部类(不仅仅是任何T
)共享是至关重要的.
ECMA参考文献是§25.1:
嵌套在泛型类声明或泛型结构声明(第25.2节)中的任何类本身都是泛型类声明,因为应提供包含类型的类型参数以创建构造类型.
Dylan Beatti.. 6
是的,您的嵌套类绝对是通用的,因为T绑定到嵌套类的任何实例范围内的类型(这称为封闭泛型).
using System; using System.Collections.Generic; public class AGenericClass{ public class NestedNonGenericClass { public void DoSomething() { Console.WriteLine("typeof(T) == " + typeof(T)); } } } public class MyClass { public static void Main() { var c = new AGenericClass .NestedNonGenericClass(); var d = new AGenericClass .NestedNonGenericClass(); c.DoSomething(); d.DoSomething(); Console.ReadKey(false); } }
DoSomething()
根据泛型类型的关闭方式,相同的方法产生不同的输出 - 所以是的,内部类肯定表现出通用行为.
简而言之,是 - 一个类型从包含它的任何类型继承类型参数:这是类似事物的关键List
和许多其他场景等 - 它们T
与外部类(不仅仅是任何T
)共享是至关重要的.
ECMA参考文献是§25.1:
嵌套在泛型类声明或泛型结构声明(第25.2节)中的任何类本身都是泛型类声明,因为应提供包含类型的类型参数以创建构造类型.
是的,您的嵌套类绝对是通用的,因为T绑定到嵌套类的任何实例范围内的类型(这称为封闭泛型).
using System; using System.Collections.Generic; public class AGenericClass{ public class NestedNonGenericClass { public void DoSomething() { Console.WriteLine("typeof(T) == " + typeof(T)); } } } public class MyClass { public static void Main() { var c = new AGenericClass .NestedNonGenericClass(); var d = new AGenericClass .NestedNonGenericClass(); c.DoSomething(); d.DoSomething(); Console.ReadKey(false); } }
DoSomething()
根据泛型类型的关闭方式,相同的方法产生不同的输出 - 所以是的,内部类肯定表现出通用行为.