gpt4 book ai didi

c# - 具有多个值的 ArrayList c#

转载 作者:太空宇宙 更新时间:2023-11-03 18:25:11 25 4
gpt4 key购买 nike

我不确定这对于 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] 分别调用字典的值?等等

最佳答案

没有理由继续使用 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;
}

关于c# - 具有多个值的 ArrayList c#,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36062524/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com