【问题标题】:DateTime Array with get set in c#在 c# 中设置的日期时间数组
【发布时间】:2015-05-10 04:00:14
【问题描述】:

我有以下代码。谁能告诉我根据 C# 规则这是否正确。

public DateTime[] datetime = new DateTime[];

我无法使用 get;用上面的设置。

随后,我想将日期保存到日期时间。

怎么做?

【问题讨论】:

  • 在 C# 6.0(Visual Studio 2015 或 2013 with Roslyn)中,将支持以下语句:public DateTime[] datetime { get; set; } = new DateTime[4];

标签: c# arrays datetime get set


【解决方案1】:

根据 C# 规则,谁能告诉我这是否正确。

我不确定你所说的规则是什么意思。但是,根据 C# 规范,您必须在声明数组时指定数组的大小:

public DateTime[] datetime = new DateTime[5];   

我无法使用 get;用上面的设置。

因为这不是声明 属性 的正确语法。你这样做:

public DateTime[] DateTimes { get; set; }

然后你通过构造函数对其进行初始化:

class Foo
{
    public Foo()
    {
        DateTimes = new DateTime[5];
    }

    public DateTime[] DateTimes { get; set; }
}

这将为您提供一个包含 5 个元素的数组

请注意,如果您事先知道日期的数量,您也可以使用数组初始化语法:

class Foo
{
    public Foo()
    {
        DateTimes = { new DateTime(1, 1, 1970), new DateTime(2, 1, 1980) };
    }

    public DateTime[] DateTimes { get; set; }
}

如果事先不知道数组大小,您或许应该考虑使用可以在运行时扩展的List<DateTime>

【讨论】:

  • 按照规则,我只是指根据 CSharp 的语法。很抱歉造成混乱。我将尝试示例回复并随后报告。
  • 感谢 UncleDave 和 Yuvalltzhakov。我的问题是通过使用他们显示的代码解决的。它现在可以正常工作了。
  • 我再也不会用 Csharp 代替 C#。非常感谢。
  • 我认为我们不需要那么迂腐,+1 为您的回复 Unnikrishnan
【解决方案2】:

与字段不同,您不能同时声明和初始化属性。而是在你的类的构造函数中初始化它:

public DateTime[] datetime { get; set; }

public MyClass()
{
  datetime = new DateTime[];
}

如果您的数组不是固定大小并且您将向其中添加未知数量的日期,请考虑使用 List 代替:

public List<DateTime> datetime { get; set; }

public MyClass()
{
  datetime = new List<DateTime>();

  // Add a DateTime:
  var newDateTime = DateTime.Now;
  datetime.Add(newDateTime);
}

【讨论】:

  • 谢谢戴夫叔叔。我会尽力执行你的建议。并在稍后报告它的成功。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-11-03
  • 2012-06-22
  • 2017-08-12
  • 2020-02-09
  • 2021-04-03
相关资源
最近更新 更多