相关疑难解决方法(0)

是否存在将我的泛型方法限制为数字类型的约束?

任何人都可以告诉我是否有一种方法可以使用泛型来限制泛型类型参数T:

  • Int16
  • Int32
  • Int64
  • UInt16
  • UInt32
  • UInt64

我知道的where关键字,但无法找到一个接口只有这些类型,

就像是:

static bool IntegerFunction<T>(T value) where T : INumeric 
Run Code Online (Sandbox Code Playgroud)

c# generics constraints

350
推荐指数
11
解决办法
10万
查看次数

F#显式成员约束:类型变量^ T无法一般化,因为它会逃避其范围

我试图在F#中使用显式成员约束.文档说"F#支持公共语言运行库支持的完整约束集",但是如果我实际上编译了一个具有这种显式约束的类,比如下面的那样,我就会遇到异乎寻常的错误.

type MyType<'T when ^T: (static member ( + ) : ^T * ^T -> ^T)> =
    member this.F a b = a + b
Run Code Online (Sandbox Code Playgroud)

报告

错误FS0670:此代码不够通用.当^ T :(静态成员(+):^ T*^ T - > ^ T)时,类型变量^ T无法推广,因为它会逃避其范围.

并在定义网站上报告member this.F.这是什么意思?相关范围是什么?

这种语言支持许多方法来完成这类工作.可以在StackOverflow上找到一个很好的探索,但是我没有看到为什么不允许这种特殊的通用约束"逃避"的明确解释.

generics f#

8
推荐指数
3
解决办法
2596
查看次数

标签 统计

generics ×2

c# ×1

constraints ×1

f# ×1