我已经用Java编程了一段时间,只是投入了一个完全用C#编写的项目.我正试图加快C#的速度,并注意到在我的新项目中几个地方使用的枚举,但乍一看,C#的枚举似乎比Java 1.5+实现更简单.任何人都可以枚举C#和Java枚举之间的差异,以及如何克服这些差异?(我不想开始语言火焰战,我只想知道如何在C#中做一些我以前用Java做的事情).例如,有人可以发布一个C#对应的Sun着名的Planet枚举示例吗?
public enum Planet {
MERCURY (3.303e+23, 2.4397e6),
VENUS (4.869e+24, 6.0518e6),
EARTH (5.976e+24, 6.37814e6),
MARS (6.421e+23, 3.3972e6),
JUPITER (1.9e+27, 7.1492e7),
SATURN (5.688e+26, 6.0268e7),
URANUS (8.686e+25, 2.5559e7),
NEPTUNE (1.024e+26, 2.4746e7),
PLUTO (1.27e+22, 1.137e6);
private final double mass; // in kilograms
private final double radius; // in meters
Planet(double mass, double radius) {
this.mass = mass;
this.radius = radius;
}
public double mass() { return mass; }
public double radius() { return radius; }
// universal gravitational constant (m3 kg-1 s-2) …Run Code Online (Sandbox Code Playgroud) 我必须获取一段数据,并将大量可能的变量应用于它.我真的不喜欢使用巨大的if语句集的想法,所以我在寻求简化方法的帮助,并使其更容易维护.
举个例子:
if (isSoccer)
val = soccerBaseVal;
else if (isFootball)
val = footballBaseVal;
.... // 20 different sports
if (isMale)
val += 1;
else
val += 5;
switch(dayOfWeek)
{
case DayOfWeek.Monday:
val += 12;
...
}
Run Code Online (Sandbox Code Playgroud)
等等..等等.可能在100-200种不同的测试和配方变化范围内.
这似乎是一场维护噩梦.有什么建议?
编辑:
为了进一步增加问题,许多变量仅在某些情况下使用,因此它不仅仅是具有不同值的固定逻辑集.逻辑本身必须根据条件改变,可能是从先前变量应用的条件(例如,如果val>阈值).
所以是的,我同意对许多值使用查找,但我也必须有可变逻辑.