是否可以反转对象或将其标记为负数?
这是我想要实现的:
DateTime.Now.Add(-TimeUnits.Week)
这应该返回当前日期时间减去 7 天。
所以我必须在 Add
方法中检测传递的对象是否为负数!
我看过一个Struct
,但我对它们的经验太少,无法判断这是否可能!
目前,我有一个枚举,当然非常有限。 我没有特别绑定(bind)到枚举,所以它可以是任何其他对象!
我的枚举 TimeUnits
:
public enum TimeUnits
{
Once = 0,
Day = 1,
Week = 2,
Month = 3,
Quarter = 4,
Year = 5
}
我在 DateTime
上有一个扩展方法,我想将一个对象传递给方法 Add
,如下所示:
private static DateTime? Add(this DateTime current, TimeUnits unitOfTime)
{
switch (unitOfTime)
{
case TimeUnits.Once:
return null;
case TimeUnits.Day:
return current.AddDays(1);
case TimeUnits.Week:
return current.AddDays(7);
case TimeUnits.Month:
return current.AddMonths(1);
case TimeUnits.Quarter:
return current.AddMonths(3);
case TimeUnits.Year:
return current.AddYears(1);
default:
throw new ArgumentOutOfRangeException("unitOfTime");
}
}
最佳答案
严格来说,枚举类型不过是为数字定义命名常量的一种方式。换句话说:表达式 -((int(TimeUnit.Week)
只是另一种以更易读的方式编写文字 -2
的方式。
虽然在技术上完全可以“否定”这样的值(因为对于编译器来说它确实是一个 int),但您不应该这样做。从概念上讲,这是一个可怕的想法,它完全是对枚举概念的误用。 - 为您尝试做的事情使用简单的常量,或者如果可能,定义一个 Subtract()
方法。
关于c# - 反转对象或用减号将其标记为负数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27366312/