我之前使用过 C#,我们可以在其中定义一个 struct
,它将是一个值类型。我现在正在学习 Kotlin,据我所知,kotlin data-class
按值比较,可以按值复制等。在网上找到了一些关于此的讨论,但这并不简单,我想精通 C# 和 Kotlin 的人来澄清这一点:我可以像 C# struct
一样解释 Kotlin 的 data class
并收工吗?如果不是,有什么区别?
最佳答案
Kotlin 数据类和 C# 结构的主要区别在于,Kotlin 数据类仍然是类,它们通过引用(一种引用类型,就 C# 而言)传递并存储在与其他对象相同的堆(不考虑可能的 JVM 优化)而不是堆栈,与其他对象的形式相同。
数据类的复制和相等检查实现只是生成到类的方法中,并以 JVM 自然方式调用为实例方法。
数据类与结构体的一些共同限制是由不同的原因造成的:例如,数据类是最终的,因为数据类继承的自动生成函数的语义不明确。
关于c# - Kotlin 的数据类 == C# 的结构?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47994790/