如何从具有交替名称的字符串中获取值?

时间:2013-05-16 11:14:19

标签: c#

我有以下代码:

var currentCity = db.City.Find(player.Location);

switch (TravelTo) {
    case 1:
        costs = currentCity.TravelCost.City1;
        break;
    case 2:
        costs = currentCity.TravelCost.City2;
        break;
    case 3:
        costs = currentCity.TravelCost.City3;
        break;
    case 4:
        costs = currentCity.TravelCost.City4;
        break;
    case 5:
        costs = currentCity.TravelCost.City5;
        break;
}

有没有更好的方法来获得成本价值?有没有办法可以更改我想要调用的字符串的名称?所以我可以创建类似

的东西
costs = currentCity.TravelCost.City[TravelTo]

或类似的东西?我觉得我写了一个不必要的开关语句,但我对C#的了解并不足以提出另一种选择。

谢谢,

3 个答案:

答案 0 :(得分:2)

鉴于您拥有City1..n列和属性名称,实际上并没有更好的方法。但是你至少可以将这个switch语句放在TravelCost实体中。即你可以有一个方法public int TravelCost.GetCostByCity(int city),它持有讨厌的switch语句。

答案 1 :(得分:2)

我是c#本人的新手,我不确定每种数据的确切类型。但代码本身看起来很好。我认为TravelCost是一个枚举?如果没有,那么做到这一点是个好主意。您还可以使用Dictionary来存储和操作数据。但对我来说这看起来不错了

答案 2 :(得分:1)

您可以使用hashtable

试试这个:

Hashtable distancesFromCityTo = new Hashtable();    
distancesFromCityTo.Add("City1", 1000);
distancesFromCityTo.Add("City2", 450);

int cost1 = (int)distancesFromCityTo["City1"];
int cost2 = (int)distancesFromCityTo["City2"];