Я использовал C # раньше и там мы можем определить struct
которая будет типом значения. Я изучаю Kotlin сейчас, и насколько я знаю, класс data-class
kotlin сравнивается по значению, может копировать по значению и т. Д. Нашел несколько дискуссий в Интернете об этом, но это было нелегко, и я хотел бы, чтобы кто-то квалифицированный в C # и Kotlin очистите это: могу ли я интерпретировать data class
Kotlin как структуру C # и назвать его днем? Если нет, каковы различия?
Основное различие между классами данных Kotlin и структурами C # заключается в том, что классы данных Kotlin все еще являются классами , они передаются по ссылке (ссылочный тип, говорящий в терминах C #) и сохраняются в одной и той же куче с другими объектами (не принимая возможные JVM оптимизация во внимание) вместо стека, в том же виде, что и другие объекты.
Реализации экземпляров копирования и проверки соответствия для классов данных просто сгенерированы в методы класса и называются методами экземпляра в естественном режиме JVM.
Некоторые ограничения, которые классы данных имеют вместе с структурами, вызваны другой причиной: например, классы данных являются окончательными из-за нечеткой семантики автоматически сгенерированных функций, которые будут поступать из наследования класса данных.