猿问

是否有限制将我的泛型方法限制为数值类型?

有人能告诉我是否有泛型限制泛型类型参数的方法吗?T只限于:

  • Int16

  • Int32

  • Int64

  • UInt16

  • UInt32

  • UInt64

我知道where关键字,但找不到这些类型,

类似于:

static bool IntegerFunction<T>(T value) where T : INumeric


富国沪深
浏览 1215回答 3
3回答

皈依舞

这是没有限制的。对于想要使用泛型进行数值计算的人来说,这是一个真正的问题。我会更进一步说我们需要static&nbsp;bool&nbsp;GenericFunction<T>(T&nbsp;value)&nbsp; &nbsp;&nbsp;&nbsp;&nbsp;where&nbsp;T&nbsp;:&nbsp;operators(&nbsp;+,&nbsp;-,&nbsp;/,&nbsp;*&nbsp;)甚至static&nbsp;bool&nbsp;GenericFunction<T>(T&nbsp;value)&nbsp; &nbsp;&nbsp;&nbsp;&nbsp;where&nbsp;T&nbsp;:&nbsp;Add,&nbsp;Subtract不幸的是,您只有接口、基类和关键字。struct(必须是值型),class(必须是参考类型)和new()(必须具有默认构造函数)您可以将数字包装在其他东西中(类似于INullable<T>)就像在代码项目中.您可以在运行时应用该限制(通过反映运算符或检查类型),但这确实失去了拥有泛型的优势。
随时随地看视频慕课网APP
我要回答