具有多个值的ArrayList c#

时间:2016-03-17 13:50:44

标签: c# arrays dictionary arraylist

我不确定这是否可以使用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]分别调用字典的值?等

2 个答案:

答案 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);
    }