Интересно, что C # решил использовать .
вместо ->
для ссылки на член объекта, на который ссылается ссылка на класс, так как семантика ближе к таковой оператора C ->
, чем его .
оператор.Например, в C, если кто-то видит код a=b; a.X=5;
, он распознает, что он записывает в поле X
некоторой структуры a
, которая отличается от b
.В отличие от этого, если человек увидит код a=b; a->X=5;
, он поймет, что он пишет в поле X
структуры, на которую указывают и a
и b
.В C # поведение рассматриваемого кода будет зависеть от того, является ли тип b
классом или структурой.
Однако добавление обобщений в C # было бы затруднено, если бы C # использовалразличные операторы разыменования для классов и структурных типов, поскольку для определенного фрагмента кода можно разыменовать экземпляр типа с ограниченным интерфейсом, не зная, является ли рассматриваемый тип структурой или классом;неясно, какой оператор следует использовать, если структуры использовали оператор, отличный от классов.