Tôi đã lập trình bằng Java được một thời gian và vừa bị ném vào một dự án được viết hoàn toàn bằng C #. Tôi đang cố gắng tăng tốc độ trong C # và nhận thấy các enum được sử dụng ở một số nơi trong dự án mới của tôi, nhưng thoạt nhìn, các enum của C # có vẻ đơn giản hơn so với triển khai Java 1.5+. Bất cứ ai cũng có thể liệt kê sự khác biệt giữa các liệt kê C # và Java và cách khắc phục sự khác biệt? (Tôi không muốn bắt đầu một cuộc chiến ngọn lửa ngôn ngữ. Tôi chỉ muốn biết cách thực hiện một số điều trong C # mà tôi đã từng làm trong Java). Ví dụ: ai đó có thể đăng một bản sao C # lên ví dụ về hành tinh nổi tiếng của Sun không?
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)
public static final double G = 6.67300E-11;
public double surfaceGravity() {
return G * mass / (radius * radius);
}
public double surfaceWeight(double otherMass) {
return otherMass * surfaceGravity();
}
}
// Example usage (slight modification of Sun's example):
public static void main(String[] args) {
Planet pEarth = Planet.EARTH;
double earthRadius = pEarth.radius(); // Just threw it in to show usage
// Argument passed in is earth Weight. Calculate weight on each planet:
double earthWeight = Double.parseDouble(args[0]);
double mass = earthWeight/pEarth.surfaceGravity();
for (Planet p : Planet.values())
System.out.printf("Your weight on %s is %f%n",
p, p.surfaceWeight(mass));
}
// Example output:
$ java Planet 175
Your weight on MERCURY is 66.107583
Your weight on VENUS is 158.374842
[etc ...]