Дискриминированные объединения и другие примитивные типы в F # по умолчанию используют структурное равенство и предоставляют сгенерированное переопределение для метода .Equals. Оператор равенства F #, по-видимому, отличается от оператора C # тем, что он использует метод .Equals даже для ссылочных типов, но когда размеченные объединения F # используются из C #, используется оператор по умолчанию == для объекта, который проверяет ссылочное равенство, а не структурное равенство.
Почему F # не генерирует пользовательский оператор == для размеченных типов объединения, чтобы == давало ожидаемое поведение при использовании в других языках .NET?