【发布时间】:2011-12-08 06:11:15
【问题描述】:
除了 C++(因为他有运算符重载),你知道另一种 OOP 语言可以做(或在最坏的情况下模仿)“值语义”吗?
【问题讨论】:
标签: c++ oop programming-languages semantics
除了 C++(因为他有运算符重载),你知道另一种 OOP 语言可以做(或在最坏的情况下模仿)“值语义”吗?
【问题讨论】:
标签: c++ oop programming-languages semantics
在 C# 中,如果您将“对象”定义为 struct,则它具有值语义。如果您将其定义为class,则它具有引用语义(除非您将其设为不可变,如string,则其语义更类似于值一)。
我要补充一点,打破这种“隐含”语义很容易。
struct MyStruct
{
public StringBuilder SB;
}
MyStruct a = new MyStruct();
a.SB = new StringBuilder();
MyStruct b = a;
现在你已经破坏了语义,因为 a 和 b “指向”同一个引用。
【讨论】:
D 中的结构也具有值语义。
【讨论】: