4

我可以做这个:

void MyMethod<T>() where T : class { }

有这样的吗?

void MyMethod<T>() where T : interface { }

我不想明确指定接口名称。

另一种方法是我可以传入一个受约束的参数,class如果返回 false,则抛出异常typeof(T).IsInterface,但这不如约束那么干净。

4

1 回答 1

3

这是没有意义的,因为它不会导致任何限制。

约束class意味着类型参数必须是引用类型。

那么interface没有明确的接口名称应该限制什么?

接口本身只是方法/属性的声明,因此约束“某物是接口”的字面意思是“某物有一些声明” - 这是无用的。

于 2016-01-20T15:25:00.407 回答