[英]Populating an IF Statement Dynamically from Lists C#
我試圖弄清楚如何動態填充這個 if 語句,這樣當我向列表中添加更多項目時,我就不必繼續添加 else if 了。 我確信我可以用嵌套的 foreach 語句來做到這一點,我只是不知道如何正確地做到這一點。
private List<string> uriList = new List<string>();
private List<string> titleList = new List<string>();
if (item.Text == titleList[0])
{
YTPlayer(uriList[0].ToString());
}
else if (item.Text == titleList[1])
{
YTPlayer(uriList[1].ToString());
}
else if (item.Text == titleList[2])
{
YTPlayer(uriList[2].ToString());
}
else
{
}
您只需要一個 integer。
int i = 0
foreach (var item in items)
{
if (item.Text == titleList[i])
{
YTPlayer(uriList[i].ToString());
break;
}
i++;
}
for (int i = 0; i < titleList.count(); i++)
{
if (item.Text == titleList[i])
{
YTPlayer(uriList[i].ToString());
}
}
一個優雅的解決方案是添加Dictionary<string, Action>()
並根據輸入初始化行為。 那將扮演調度員的角色。 它是可移動的,而且很容易縮放
您可以改用列表方法。 此外, uriList
不需要.ToString()
,因為它是字符串列表。
if (titleList.Contains(item.Text)) {
int index = titleList.IndexOf(item.Text);
YTPlayer(uriList[index]);
}
int index = itemList.FindIndex(x => x == item.Text);
if (index >= 0 && index < uriList.Count)
{
YTPlayer(uriList[index]);
}
else
{
// Your else
}
文檔: https://docs.microsoft.com/ru-ru/dotnet/api/system.collections.generic.list-1.findindex?view=net-5.0
您應該在titleList
上使用 for 循環
private List<string> uriList = new List<string>();
private List<string> titleList = new List<string>();
for (var i = 0; i < titleList.Count(); i++)
{
if (item.Text == titleList[i])
{
YTPlayer(uriList[i]);
break;
}
}
這將允許您使用任何大小的列表。
此外,無需在string
上調用ToString()
。
您也可以使用IndexOf
var i = titleList.IndexOf(item.Text);
if (i != -1)
YTPlayer(uriList[i]);
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.