gpt4 book ai didi

c# - 在类中使用静态字段

转载 作者:太空狗 更新时间:2023-10-30 00:20:48 25 4
gpt4 key购买 nike

所以我在一个类中有一个字段,但由于某种原因它以未初始化的值 0001.01.01 返回。

 private static DateTime start = new DateTime(2011, 1, 1);

在另一个字段中有另一个静态方法用作初始化程序。

 private static readonly DateTime[] dates = SetupDates(20 * 12);


private static DateTime[] SetupDates(int n){
var d = start;
....
}

认为需要在 SetupDates 继续之前完成 start 中的“new”...因此局部变量 d 将包含 2011.1.1。看来我错了,我应该改用静态构造函数。这种行为是预料之中的吗?

最佳答案

The order matters here .

The static field variable initializers of a class correspond to a sequence of assignments that are executed in the textual order in which they appear in the class declaration.

确保首先声明您的start 静态字段。或者更好的是使用静态构造函数,这样您就不会依赖字段的顺序。

例如这个有效:

    private static DateTime start = new DateTime(2011, 1, 1);
private static readonly DateTime[] dates = SetupDates(20 * 12);

但这不是

    //Bad SetupDates relies on start which is not initialized
private static readonly DateTime[] dates = SetupDates(20 * 12);
private static DateTime start = new DateTime(2011, 1, 1);

假设您更改 SetupDates 以返回 DateTime[]

关于c# - 在类中使用静态字段,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9016913/

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