为了账号安全,请及时绑定邮箱和手机立即绑定

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

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

富国沪深 2019-06-01 14:31:23
有人能告诉我是否有泛型限制泛型类型参数的方法吗?T只限于:Int16Int32Int64UInt16UInt32UInt64我知道where关键字,但找不到只这些类型,类似于:static bool IntegerFunction<T>(T value) where T : INumeric
查看完整描述

3 回答

?
皈依舞

TA贡献1851条经验 获得超3个赞

这是没有限制的。对于想要使用泛型进行数值计算的人来说,这是一个真正的问题。

我会更进一步说我们需要

static bool GenericFunction<T>(T value) 
    where T : operators( +, -, /, * )

甚至

static bool GenericFunction<T>(T value) 
    where T : Add, Subtract

不幸的是,您只有接口、基类和关键字。struct(必须是值型),class(必须是参考类型)和new()(必须具有默认构造函数)

您可以将数字包装在其他东西中(类似于INullable<T>)就像在代码项目中.


您可以在运行时应用该限制(通过反映运算符或检查类型),但这确实失去了拥有泛型的优势。


查看完整回答
反对 回复 2019-06-01
  • 3 回答
  • 0 关注
  • 1214 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信