.net:如何对泛型实施一些限制?

.net:如何对泛型实施一些限制?,.net,generics,types,.net,Generics,Types,是否有可能在泛型中对T型施加一些限制?请参阅泛型参数。创建您自己的泛型类型和方法时,约束允许您应用有关类型参数的一些规则,例如,它们支持所需的接口或具有默认构造函数。请参阅泛型参数。在创建自己的泛型类型和方法时,约束允许您应用有关类型参数的一些规则,例如,它们支持所需的接口或具有默认构造函数。是的,您可以对T设置一些约束。这些约束是通过where子句引入的。检查 类型参数必须是值类型。可以指定除Nullable之外的任何值类型。有关更多信息,请参阅使用可为空的类型(C#编程指南) where T

是否有可能在泛型中对T型施加一些限制?

请参阅泛型参数。创建您自己的泛型类型和方法时,约束允许您应用有关类型参数的一些规则,例如,它们支持所需的接口或具有默认构造函数。

请参阅泛型参数。在创建自己的泛型类型和方法时,约束允许您应用有关类型参数的一些规则,例如,它们支持所需的接口或具有默认构造函数。

是的,您可以对T设置一些约束。这些约束是通过
where
子句引入的。检查

类型参数必须是值类型。可以指定除Nullable之外的任何值类型。有关更多信息,请参阅使用可为空的类型(C#编程指南)

where T: class
类型参数必须是引用类型;这也适用于任何类、接口、委托或数组类型

where T : new()
类型参数必须具有公共无参数构造函数。与其他约束一起使用时,必须最后指定new()约束

where T : <base class name>

为T提供的类型参数必须是或派生自为U提供的参数。

是的,您可以对T设置一些约束。这些约束是通过
where
子句引入的。检查

类型参数必须是值类型。可以指定除Nullable之外的任何值类型。有关更多信息,请参阅使用可为空的类型(C#编程指南)

where T: class
类型参数必须是引用类型;这也适用于任何类、接口、委托或数组类型

where T : new()
类型参数必须具有公共无参数构造函数。与其他约束一起使用时,必须最后指定new()约束

where T : <base class name>
为T提供的类型参数必须是或派生自为U提供的参数。

public class MyClass<T> where T : ISomeInterface
公共类MyClass其中T:ISomeInterface
比如说。还有很多现有的SO问题,比如额外的细节。

基本上

public class MyClass<T> where T : ISomeInterface
公共类MyClass其中T:ISomeInterface

比如说。还有很多现有的SO问题,比如额外的细节。

这没有意义。您希望执行什么样的限制?您希望在编译时或运行时执行强制吗?我相信他指的是泛型类型约束。这没有意义。您希望执行什么样的限制?希望在编译时或运行时执行吗?我相信他指的是泛型类型约束。在基类和接口名示例中,我会小心使用尖括号:)@Tim Barrass你是对的,必须替换
=>
MyClass
我会小心使用尖括号——在基类和接口名称示例中:)@Tim Barras你说得对,必须替换
=>
MyClass