我很难弄清楚如何在 C# 中编写对其字段值有限制的结构。例如,System.DateTime
DateTime d = new DateTime();
将值 01/01/0001 12:00:00 AM 放入 d 中。但我无法编写显式无参数构造函数,因为不允许 struct 具有显式无参数构造函数。那么,如何创建一个在我想要的约束内默认构造的结构?
我唯一能想到的就是设计属性,使其返回我想要的约束内的值。例如,如果我存储一个想要大于 0 的 int,我只需在返回值中添加 1 并禁止设置小于 1。这是明智的做法吗?
最佳答案
查看this的答案询问更多信息。基本上,在没有参数的情况下,值类型字段始终会初始化为默认值作为性能优化,因为值类型通常在数组等中以更大的数量使用。
如果您想要真正的约束,您应该考虑创建一个类,但如果在使用您的类时出现性能问题,“智能属性”可能是可行的方法。至于 DateTime 类型,是的,它具有“智能”属性,将日期存储为数字,并根据请求转换为特定格式(通过属性访问)。 01/01/0001 12:00:00 AM 实际上是设计时默认内部 0 的表示。
关于c# - 有约束的结构,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1214762/