簡體   English   中英

從列表 C# 動態填充 IF 語句

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM