Реализация по умолчанию ValueType.Equals
делает именно то, что вы хотите.Поэтому, если вы сделаете:
s1 = ...;
s2 = ...;
s1.Equals(s2);
Вызов "Equals" сделает автоматическое глубокое сравнение, которое вы ищете.
В целом, C # предпочитает не использовать перегруженные операторы, которыеВероятно, поэтому он не реализует оператор.
Кроме того, философски C # склонен избегать неявного поведения, включая такие вещи, как неявная генерация методов.