Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/xslt/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 何处方法限制_C#_Generics - Fatal编程技术网

C# 何处方法限制

C# 何处方法限制,c#,generics,C#,Generics,我看到过类似关键字的where通用方法 public static void DoStuff<T>() where T : public static void DoStuff(),其中T: 其中似乎以特定方式限制了T的类型 问题:这个在哪里起作用?是否只能对接口进行ristrict,如,其中T:IComparable,或者是否有不同的方式?它被称为 您可以约束T从基类继承、实现接口、成为引用类型、成为值类型、拥有无参数构造函数 编译器检查类型参数是否满足这些要求 在您的例子中

我看到过类似关键字的
where
通用方法

public static void DoStuff<T>() where T : 
public static void DoStuff(),其中T:
其中
似乎以特定方式限制了
T
的类型

问题:这个
在哪里起作用?是否只能对接口进行ristrict,如
,其中T:IComparable
,或者是否有不同的方式?

它被称为

您可以约束T从基类继承、实现接口、成为引用类型、成为值类型、拥有无参数构造函数

编译器检查类型参数是否满足这些要求


在您的例子中,该约束允许调用
DoStuff
方法中的
IComparable
方法。

不值得单独回答,但我要补充的是,
其中
仅是一个检查约束,它不会帮助解决重载问题。严格地说,这是一个关于它如何工作的信息,但这是我所知道的最常见的错误假设。@grek40谢谢你的评论。所有关于约束的细节都在MSDN页面上进行了解释,您的评论已经强调了这一点,所以我将保留原样。