-6

我在 C# 中使用列表类型,我想知道如果我 100% 确定以下条件中只有一个条件在任何给定时间为真,那么使用它的最佳方法是什么。基本上我只需要输出列表中的城市,下面的代码是否正确?

// List of cities we need to join
List<string> cities = new List<string>();
if(country == US)      cities.Add("New York");
if(country == India)   cities.Add("Mumbai");
if(country == Germany) cities.Add("Berlin");

string output = string(cities);
Console.WriteLine(output);
4

6 回答 6

3

为什么不直接使用字典?

var d = new Dictionary<string, string>
{
    {"US", "New York"},
    {"India", "Mumbai"},
    {"Germany", "Berlin"},
};

// if you really want a list
List<string> output = new List<string> { d[country] }; 

// if not 
string city = d[country]

// even better
string city;
if (d.TryGetValue(country, out city))
{ } // city found 
else
{ } // city not found 
于 2013-09-03T12:12:30.533 回答
2

你不需要清单?!?!?!?

var city = String.Empty;
if(country == "US")      city ="New York";
if(country == "India")   city = "Mumbai";
if(country == "Germany") city ="Berlin";

Console.WriteLine(city);

但老实说,提交的代码无法编译,所以我怀疑你花了超过 3 秒的时间试图自己解决这个问题。

于 2013-09-03T12:12:11.857 回答
2

您可以使用 switch

switch(country)
{
    case "US":
        cities.Add("New York");
        break;
    case "India":
        cities.Add("Mumbai");
        break;
    case "Germany":
        cities.Add("Berlin");
        break;
    default:
        break;
}
// i assume you want to list the countries:
Console.WriteLine(string.Join(",", cities));

如果您想使用相互“排除”的if语句if,只需使用if-else

if (country == "US")cities.Add("New York");
else if (country == "India") cities.Add("Mumbai");
else if (country == "Germany") cities.Add("Berlin");
于 2013-09-03T12:13:15.047 回答
0

你可以使用switch 语句

switch 语句是一个控制语句,它从候选列表中选择要执行的 switch 部分。

每个 switch 部分包含一个或多个 case 标签和一个或多个语句的列表。以下示例显示了一个简单的 switch 语句,它具有三个 switch 部分。每个 switch 部分都有一个 case 标签,例如 case 1,以及一个包含两个语句的列表。

所以你可以有类似的东西

switch (country )
{
    case US:
        cities.Add("New York");
        break;
    case India:
        cities.Add("Mumbai");
        break;
    case Germany:
        cities.Add("Berlin");
        break;
}
于 2013-09-03T12:09:47.673 回答
0

你可以使用一个开关

switch(country) 
{
   case "US":
       //stuff
       braek;
   case "India":
       //stuff
       break;

}
于 2013-09-03T12:10:57.503 回答
0

正如上面答案中已经提到的,您可以使用Dictionary, switch Case, 或Else If

我也不知道你什么时候知道一次只能满足一个条件,那么你为什么要使用List,你可以使用一个string变量来存储输出。

于 2013-09-03T12:19:50.557 回答