c# - 有约束的结构

标签 c# constructor struct

我很难弄清楚如何在 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/

相关文章:

c# - 如何根据行数据动态改变行的样式?

c# - 避免在应用程序中使用 GAC

c# - 如何手动结束当前正在运行的方法调用?

c++ - C++中的继承特性

c# - 为什么我应该避免在 C# 中使用 Properties?

c++ - arb 的静态 ctor/dtor 观察器。 C++类

java - java中的参数化构造函数是否必须有主体?

javascript - 如何在构造函数中初始化依赖于另一个方法值的状态方法

c++ - struct _stack* 和 Digit::struct_stack* 中的一些问题

c - 带结构前缀的初始化是什么意思?