枚举的值始终由整数表示。您不能使用不同类型(如字符串数组)。
您可以执行以下操作以获得类似的结果:
Dictionary<Car, string[]> cars;
cars = new Dictionary<Car, string[]>();
cars.Add(Car.carA, new string[]{"ford", "red"});
cars.Add(Car.carB, new string[]{"bmw", "black"});
cars.Add(Car.carC, new string[]{"toyota", "white"});
然而,只有在您需要将枚举映射到字符串时才应这样做。您似乎混淆了各种“事物”,即汽车的品牌和颜色。您应该考虑更像这样的东西:
enum Make {
Ford,
BMW,
Toyota
}
enum Color {
Red,
Black,
White
}
并将汽车表示为:
struct Car {
Make make;
Color color;
public Car(Make m, Color c) { make = m; color = c; }
}
并将列表列出:
Car[] cars = new Car[]{new Car(Make.Ford, Color.Red), new Car(Make.BMW, Make.Black), new Car(Make.Toyota, Make.White)};
CarDetails
实例,因此引用相等将不足以判断;(4) 两个具有相同值的CarDetails
对象将不被视为相等。 - smartcavemanEquals()
或GetHashCode()
重写,所以:new CarDetails { Maker = "ford", Color = "red" }.Equals(new CarDetails { Maker = "ford", Color = "red" })
将返回false。 - smartcaveman==
或ReferenceEquals()
。(4) 我们不能依赖于Equals()
或GetHashCode()
。 - smartcaveman