有没有一种方法可以将一个DateTime对象的值传递给另一个DateTime对象,而无需引用同一对象?

时间:2019-05-22 08:15:18

标签: c# datetime reference

我正在尝试创建一个输出行程的程序,但是在围绕指向同一对象的两个DateTime对象周围寻找方法时遇到了问题。特定的DateTime作为参数传递给方法,我在方法内使用了另外两个DateTime对象(当前都指向参数)

memberwiseClone()之类的常规修补程序都无法用于DateTime,因此我有些茫然。

{
    DateTime1 = x;
    for (int i = 0; i < someArray.Length; i++)
    {
        DateTime2 = DateTime1;
        double minutes = someValue / someOtherValue;
        DateTime2.AddMinutes(minutes);
        WriteLine("{0:hh//:mm} ---> {1:hh//:mm}, item #{2}", DateTime1, DateTime2, i);
        DateTime1 = DateTime2;
    }
}

理想情况下,我希望它可以打印出以下内容:

"21:00 ---> 21:30, item #1"
"21:30 ---> 22:00, item #2"

但是,此刻,我只是将所有值都设为DateTime参数的初始值。

2 个答案:

答案 0 :(得分:1)

System.DateTime结构是不可变的,这意味着它无法更改。 其类似AddMinutes的方法不会更改原始结构的值,但它的返回值包含指定操作的结果。

您应该改用DateTime2 = DateTime1.AddMinutes(minutes)

答案 1 :(得分:0)

DateTime2.AddMinutes(minutes);行不是void,它返回结果。更改为:

DateTime2 = DateTime1.AddMinutes(minutes);