编辑:给定问题标题,我假设您要约束类型参数不是非可空值类型.在问题正文中指定它可能是个好主意.
不 - 没有这样的限制.实际上,两者class和struct约束都禁止可以为可为空的值类型的参数.
您可以创建一个没有约束的接口,但只创建两个实现:
interface IFoo<T> { }
class FooClass<T> : IFoo<T> where T : class {}
class FooNullableValue<T> : IFoo<Nullable<T>> where T : struct {}
Run Code Online (Sandbox Code Playgroud)
这当然不能阻止任何其他人实施IFoo<int>.如果您能给我们更多背景知识,我们可以提供更多帮助.