c# - 如何通过 "obj.MyDate.AddDays"创建一个支持变异的类?

标签 c# class datetime properties struct

我想创建一个由 DateTime 结构支持的属性,但是,因为结构是值类型,MyClass.MyDate.AddDays(1) 不起作用正如以下类(class)所预期的那样:

public class MyClass
{
  public DateTime MyDate { get; set; }
}

所需的行为是将 DateTime 属性增加一天,但在我的示例中,该属性保持其初始值。我可以使用代码 MyClass.MyDate = MyClass.DateTime.AddDays(1) 得到相同的结果,但这是违反直觉的。我明白为什么这不起作用,但我不确定解决它的最佳方法。

创建 MyDate 属性以便公开的 DateTime 方法(如 AddDays())更新实例变量的公认方法是什么?

最佳答案

MyClass.MyDate = MyClass.DateTime.AddDays(1)

这是结构的标准行为。所有符合标准的结构都是不可变的,除非有很好的理由。

如果你真的对上面的语法有问题,我推荐这样的东西:

public class MyClass
{
    public DateTime MyDate { get; set; }

    public void AddDays(double days)
    {
        this.MyDate = this.MyDate.AddDays(days);
    }
}

关于c# - 如何通过 "obj.MyDate.AddDays"创建一个支持变异的类?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9526458/

相关文章:

c# - 尝试从单元测试项目中读取配置文件时发生System.NullReferenceException

PHP 4 - 类中的变量

python - 每次调用类时都需要创建随机数

c# - 根据屏幕分辨率调整 WPF 窗口和内容的大小

c# - 宇宙数据库 : Add Item in non existent parent using Patch

c# - 单声道/Cygwin 问题?

java - 从另一个类文件访问另一个类文件

c# - 如何在 C# 中生成时间和日期并将其格式化为 mysql?

c# - 时间跨度数据类型 C#

java - SAX 解析异常 : value is not a valid value for 'date'