繁体   English   中英

C#泛型*不*实现某些功能

[英]C# generic does *not* implement something

我知道我可以做一个像

private T MyFun<T>() 
  where T : IMyInterface
{...}

我可以做相反的事情,即T不实现IMyInterface吗? 具体的用例是我不想允许可为空的值,但我只是很好奇。

如果您不希望可为空的类型,则可以执行此操作。

private T MyFun<T>() 
  where T : struct
{...}

不可以,在一般情况下,您无法指定“排除列表”。 但是,为防止允许Nullable类型,可以使用“ where T:class”约束。 由于Nullable是一个结构,因此将具有所需的效果。

编辑:糟糕,看来我太匆忙了-您是否在问如何防止允许任何可以为null或明确为Nullable的内容?

您总是可以在运行时抛出NotSupportedException()。 诚然,不如编译器阻止它好

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM