-1

我正在研究一种二进制搜索算法,它具有以下参数:

现在,当我传递这些论点时:

它说 int 类型不能用作参数 F(我的印象是泛型类型与正在传递的类型无关)并且没有从 int 到 IComparable 的“装箱”转换。

我试图做的事情:基本上,我希望这个方法接受可以是各种数字类型(整数、双精度等)的搜索键,所以在通用方法中我试图声明两种类型。

关于此代码: func 委托代表对象的属性,即 car.Name (string)、car.Wheels(int),它们是不同类型的。我有点希望根据正在传递的 propertyFields 类型以某种方式推断键数据类型,但这似乎太复杂了,所以我尝试让它 F Key 接受各种类型,并确保我正在传递正确的类型。

我不知道这一切听起来是否令人困惑,但如果您对我的任何代码有疑问,请随时提问。

编辑:当我调用 BinarySearch 方法时发生错误。

编辑2:对于propertyField,我将其作为参数传递:c => c.Longitude(或任何其他对象属性)。

4

1 回答 1

1

你的第二个约束需要是where F : IComparable<F>或者你根本不应该有 aF并且你应该接受 aT Key而不是 aF Key

于 2017-04-12T17:05:17.273 回答