Las uniones discriminadas y otros tipos primitivos en F # utilizan la igualdad estructural por defecto y proporcionan una anulación generada para el método .Equals. El operador de igualdad F # aparentemente difiere del C# en que usa el método .Equals incluso para los tipos de referencia, pero cuando se usan las uniones F # discriminadas desde C#, se utiliza el operador predeterminado == para el objeto, que busca la igualdad de referencia en lugar de igualdad estructural¿Por qué F # no proporciona una sobrecarga personalizada para el operador ==?
¿Por qué F # no genera un operador personalizado == para tipos de unión discriminados, de modo que == da el comportamiento esperado cuando se usa en otros lenguajes .NET?
Pero, sin duda, == operador debe ser visto como un concepto .NET en lugar de un concepto # C y F # tiene que jugar bien con el resto de .NET ... – SoftMemes
El operador == '' es una Cosa C#. Utilizaron diferentes nombres ('=' vs '==') precisamente porque hacen cosas diferentes, y se hereda de OCaml, que lo hizo. –
@Jon: si bien es cierto, el equipo de F # se aseguró de que los operadores aritméticos comunes funcionaran en todos los idiomas (por ejemplo, '(+)' se traduce a 'op_Addition', que es lo que C# reconoce). Podrían haber generado un método 'op_Equality' con la misma facilidad. – kvb