Khi xử lý các giá trị của một enum trên cơ sở từng trường hợp, tốt hơn là sử dụng câu lệnh chuyển đổi hoặc từ điển?xử lý trường hợp enum - tốt hơn để sử dụng chuyển đổi hoặc từ điển?
Tôi nghĩ từ điển sẽ nhanh hơn. Về mặt không gian, nó chiếm một số trong bộ nhớ, nhưng tuyên bố trường hợp cũng sẽ mất một số bộ nhớ chỉ trong bộ nhớ cần thiết cho chương trình riêng của mình. Vì vậy, dòng dưới cùng tôi nghĩ rằng nó luôn luôn tốt hơn để chỉ sử dụng từ điển.
Dưới đây là hai ngôn ngữ này cạnh nhau để so sánh:
Với những enums:
enum FruitType
{
Other,
Apple,
Banana,
Mango,
Orange
}
enum SpanishFruitType
{
Otra,
Manzana, // Apple
Naranja, // Orange
Platano, // Banana
Pitaya // Dragon fruit, only grown in Mexico and South American countries, lets say
// let's say they don't have mangos, because I don't remember the word for it.
}
Dưới đây là cách để làm điều đó với câu lệnh switch:
private static SpanishFruitType GetSpanishEquivalent(FruitType typeOfFruit)
{
switch(typeOfFruit)
{
case FruitType.Apple:
return SpanishFruitType.Manzana;
case FruitType.Banana:
return SpanishFruitType.Platano;
case FruitType.Orange:
return SpanishFruitType.Naranja;
case FruitType.Mango:
case FruitType.Other:
return SpanishFruitType.Otra;
default:
throw new Exception("what kind of fruit is " + typeOfFruit + "?!");
}
}
Và dưới đây là cách thực hiện bằng từ điển:
private static Dictionary<FruitType, SpanishFruitType> EnglishToSpanishFruit = new Dictionary<FruitType, SpanishFruitType>()
{
{FruitType.Apple, SpanishFruitType.Manzana}
,{FruitType.Banana, SpanishFruitType.Platano}
,{FruitType.Mango, SpanishFruitType.Otra}
,{FruitType.Orange, SpanishFruitType.Naranja}
,{FruitType.Other, SpanishFruitType.Otra}
};
private static SpanishFruitType GetSpanishEquivalentWithDictionary(FruitType typeOfFruit)
{
return EnglishToSpanishFruit[typeOfFruit]; // throws exception if it's not in the dictionary, which is fine.
}
Từ điển không chỉ có tăng tốc, mà còn có các chuỗi không cần thiết trong mã. Điều này có tốt hơn khi sử dụng từ điển không? Có cách nào tốt hơn cả ba không?
Xin cảm ơn trước.
Bạn đang thực hiện bao nhiêu lần tra cứu này trong một giây? Nếu nó ít hơn một tỷ bajillion, đừng lo lắng về nó. Chỉ cần chọn phương pháp dễ nhất để bạn đọc/duy trì. –
Công tắc nhanh hơn trong thực tế –