我有以下简单类型:
module Structures
type Point2D<'T> (x : 'T, y : 'T) =
member this.X = x
member this.Y = y
member this.IsEqualTo (p : Point2D<'T>) =
(this.X = p.X) && (this.Y = p.Y)
Run Code Online (Sandbox Code Playgroud)
但Visual Studio(2012试用版)在名称"IsEqualTo"下放置一条红色波浪线,在"this.X"下放置一条蓝色波浪线.
红色波浪线的错误消息如下:
通用成员IsEqualTo已在此程序点之前的非均匀实例化中使用.考虑重新排序成员,以便首先发生此成员.或者,明确指定成员的完整类型,包括参数类型,返回类型和任何其他通用参数和约束.
蓝线的消息是:
类型参数缺少约束'when'T:equality'
我已经尝试在所有其他成员之前放置"IsEqualTo",但错误仍然存在.
我猜这个错误与=登录this.X = p.X工作在泛型类型上的事实有关,'T但我似乎无法纠正它.
预先感谢您的帮助.
type Point2D<'T when 'T : equality> (x : 'T, y : 'T) =
member this.X = x
member this.Y = y
member this.IsEqualTo (p : Point2D<'T>) =
(this.X = p.X) && (this.Y = p.Y)
Run Code Online (Sandbox Code Playgroud)