多年的参数类型

Sej*_*nus 12 c# types

我正在写一个接受年份作为参数的方法.即四位数等于或小于当前年份.日历只有格里高利(现在......不确定未来)我肯定不会需要BC.

我要使用哪种数据类型?明显的解决方案是使用DateTime或Int32:

public void MyFunction(DateTime date)
{
     // year to work with: date.Year;
     // date.Month, date.Day, etc. is irrelevant and will always be
}
Run Code Online (Sandbox Code Playgroud)

要么

public void MyFunction(Int year)
{
     if ( year > 9999 || otherValidations == false )
     {
         //throw new Exception...
     }

     // year to work with: new DateTime(year, 1, 1);
}
Run Code Online (Sandbox Code Playgroud)

除了编写自己的自定义数据类型年以外,还有其他选择吗?

Bra*_*don 26

一个int将工作在大多数情况下的罚款.

DateTime.Year就是DateTime构造函数所采用的内容,因此,除非您有特定原因需要其他数据类型,否则整数可能是最容易使用的.

  • 我最喜欢这个,因为它是最简单的方法(比创建一个特殊对象来保存Years更简单)并且它不会让你的用户认为DateTime的其他组件是相关的. (4认同)

Kev*_*sse 5

大概是int。接受整个 DateTime 对象会令人困惑,因为您的方法只需要年份。从那里开始, int 是合乎逻辑的选择,因为它是 DateTime.Year 属性的类型。


das*_*ght 5

这在很大程度上取决于您计划在这一年中做什么。如果您打算大量传递它,创建自定义struct封装一个 int 可能是个好主意,因为您不需要多次验证相同的数字。否则,一个普通的老人int会工作得很好。