我不确定这是否可以使用ArrayList或Dictionary,或者它是否可能是其他内容,如果是这样,我想知道你在哪里可以指出我正确的方向......
你有一个具有多个值的ArrayList,即
ArrayList weather = new ArrayList();
weather.Add("Sunny", "img/sunny.jpg");
weather.Add("Rain", "img/Rain.jpg);
然后分配给下面的控件。
if (WeatherValue = 0)
{
Label1.Text = weather[0].ToString;
Image1.ImageUrl = weather[0].ToString;
}
或者我可以用词典
来做到这一点Dictionary<string, string> dict = new Dictionary<string, string>();
dict.Add("Cloudy", "../img/icons/w0.png"); //[0]
dict.Add("Rain", "../img/icons/w1.png"); //[1]
Label1.Text = dict[0].VALUE1; //So this would get Cloudy
Image.ImageUrl = dict[0].VALUE2; //This would get ../img/w0.png
如何使用[0]和[1]分别调用字典的值?等
答案 0 :(得分:7)
没有理由继续使用ArrayList
,请使用System.Collections.Generic.List<T>
-class。然后你保持编译时安全,你不需要投射一切。
在这种情况下,您应该创建一个自定义类:
public class Weather
{
public double Degree { get; set; }
public string Name { get; set; }
public string IconPath { get; set; }
public override string ToString()
{
return Name;
}
}
然后您可以使用这个可读且可维护的代码:
List<Weather> weatherList = new List<Weather>();
weatherList.Add(new Weather { Name = "Sunny", IconPath = "img/sunny.jpg" });
weatherList.Add(new Weather { Name = "Rain", IconPath = "img/Rain.jpg" });
if (WeatherValue == 0) // whatever that is
{
Label1.Text = weatherList[0].Name;
Image1.ImageUrl = weatherList[0].IconPath;
}
更新:根据您编辑过的问题。字典没有多大意义,因为你不能通过索引(它没有订单)访问它,而只能通过密钥访问它。因为这将是天气名称,你必须事先知道它。但似乎你没有它。
所以要么循环字典中的所有键值对,要使用键作为名称和路径的值,或者只使用一个更好的真实类。
如果您不想创建课程,那么我认为只有一件事,Tuple
:
List<Tuple<string, string>> weatherList = new List<string, string>();
weatherList.Add(Tuple.Create("Sunny", "img/sunny.jpg"));
weatherList.Add(Tuple.Create("Rain", "img/Rain.jpg"));
if (WeatherValue == 0) // whatever that is
{
Label1.Text = weatherList[0].Item1;
Image1.ImageUrl = weatherList[0].Item2;
}
答案 1 :(得分:0)
您可以使用词典
Dictionary<string, string> weather = new Dictionary<string, string>();
values.Add("Sunny", "img/sunny.jpg");
values.Add("Rain", "img/Rain.jpg");
在dictionnary中调用元素的最简单方法是使用foreach循环
foreach (var pair in weather )
{
Console.WriteLine("{0}, {1}",pair.Key,pair.Value);
}