gpt4 book ai didi

c# - 如果 C# 结构只有只读属性

转载 作者:行者123 更新时间:2023-11-30 20:23:02 27 4
gpt4 key购买 nike

我正在 StackOverflow 上阅读有关不纯方法的问题 here这让我开始思考结构设计最佳实践。

阅读有关创建不可变结构的示例 here属性仅定义为 setter/getter 。

public DateTime Start { get { return start; } }
public DateTime End { get { return end; } }
public bool HasValue { get { return hasValue; } }

其他地方的其他示例,包括 System.Drawing.Point 中的属性具有 getter 和 setter。

public int Y {
get {
return y;
}
set {
y = value;
}
}

design guidelines没有具体说明,但它们非常简洁。对于结构属性,推荐的方法是什么?只读还是允许写入?

最佳答案

设计指南对此非常明确:

X DO NOT define mutable value types.

Mutable value types have several problems. For example, when a property getter returns a value type, the caller receives a copy. Because the copy is created implicitly, developers might not be aware that they are mutating the copy, and not the original value. Also, some languages (dynamic languages, in particular) have problems using mutable value types because even local variables, when dereferenced, cause a copy to be made.

至于 System.Drawing.Point,还有其他重要因素(如性能)足以打破此设计准则。参见 Why are System.Drawing Rectangle, Point, Size etc mutable structs and not classes?

关于c# - 如果 C# 结构只有只读属性,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29974301/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com