协调结构和DateTime的属性

Wil*_*iam 2 c# struct

我一直在查看DateTime结构,我有点困惑.

我对结构的理解是你不能分配字段的"默认值".如果使用了结构的默认构造函数(这不是您可以控制的东西),那么将使用其值类型的默认值初始化任何字段.

这一切都很好,但为什么DateTime的'Days'属性的默认值等于1?他们如何解决这个问题?

威廉

Jon*_*eet 6

您需要了解字段属性之间的区别.

这些字段都初始化为0,但属性可以使用这些字段执行他们喜欢的操作.样品:

public struct Foo
{
    private readonly int value;

    public Foo(int value)
    {
        this.value = value;
    }

    public int ValuePlusOne { get { return value + 1; } }
}

...

Foo foo = new Foo(); // Look ma, no value! (Defaults to 0)
int x = foo.ValuePlusOne; // x is now 1
Run Code Online (Sandbox Code Playgroud)

现在显然DateTime是一个比这更复杂的微笑,但它提供了正确的想法:)想象一下"A DateTime与字段显式设置为0"意味着......"默认" DateTime只是意味着完全相同的事情.