Элемент добавлен в словарь, но при его получении вылезает ошибка о том, что он не существует

У меня есть такой метод

 private async Task CheckAuction()
 {
     while (isRunning)
     {

         foreach (var item in idList)
         {
             
             if (priceList[item.Key] != null)
             {
                 using (HttpResponseMessage response = await client.GetAsync($"https://stalcraft.wiki/next-api/available-lots?region=ru&id={item.Value}"))
                 {
                     var responseBody = await response.Content.ReadAsStringAsync();
                     List<StalcraftItems> items = JsonConvert.DeserializeObject<List<StalcraftItems>>($"[{responseBody}]");
                     
                     if (items[0].lots != null) 
                       
                         foreach (var lot in items[0].lots)
                         {
                             if (lot.buyoutPrice <= Convert.ToInt32(priceList[item.Key]))
                             {
                                 Process[] processes = Process.GetProcessesByName("Stalcraft");
                                 IntPtr mainProcess = new();
                                 foreach (Process process in processes)
                                 {
                                     mainProcess = process.MainWindowHandle;
                                 }
                                 SetForegroundWindow(mainProcess);

                                 DataOutput.Text = $"Нашелся товар {item.Key} по цене {lot.buyoutPrice}";

                             }
                         }
                 }
             }
         }
         await Task.Delay(500000);
     }
     }

Также есть словари , в которые в процессе программы добавляются значения:

private Dictionary<string, string> idList = new Dictionary<string, string>();
private Dictionary<string, string?> priceList = new Dictionary<string, string?>();
public AutoBuyBot()
{
    InitializeComponent();
    client = new HttpClient();
    idList.Add("IWI Tavor X95", "2ony6");
    idList.Add("SIG SG 550 Sniper", "zz24n");
    idList.Add("ВСК-94", "m0mo7");
    idList.Add("FN SCAR-H", "wj75o");
    idList.Add("FN FAL", "5lnw0");
    idList.Add("Jagkommando", "knvmj");
    idList.Add("АК-308", "dmjdn");
    idList.Add("Crye Precision SIX12", "0r211");
    idList.Add("AA-12", "qj2zk");
    idList.Add("HK416", "dmjwn");
    idList.Add("HK417", "p63d2");
    idList.Add("HK XM8", "y32wo");
    idList.Add("M249 Saw", "rw255");
    idList.Add("АК-12", "g4mdp");
    idList.Add("FN Scar SSR", "qj26k");
    idList.Add("Gerber Downrange Tomahawk", "y3j20");
    idList.Add("HK XM8S", "n4md3");

    idList.Add("КЗ-4", "qj1lk");
    idList.Add("SBA Tank", "y3q1o");
    idList.Add("Гектор", "5l1q0");
    idList.Add("JD Zivcas 2A", "g43rp");
    idList.Add("Ригель", "kn3yv");
    idList.Add("Альбатрос-Разведчик", "knqkv");
    idList.Add("Альбатрос-Лазутчик", "zzjgn");
    idList.Add("Аметист", "ok096");
    idList.Add("Йорш", "5lr4q");
    idList.Add("Спаннер", "y35l3");
}
private async void button1_Click(object sender, EventArgs e)
{
    priceList.Clear();
    priceList.Add("IWI Tavor X95", IwiTavor.Text);
    priceList.Add("SIG SG 550 Sniper", sigSniper.Text);
    priceList.Add("ВСК-94", vsk94.Text);
    priceList.Add("FN SCAR-H", scarh.Text);
    priceList.Add("FN FAL", fal.Text);
    priceList.Add("Jagkommando", jagkommando.Text);
    priceList.Add("АК-308", ak308.Text);
    priceList.Add("Crye Precision SIX12", six12.Text);
    priceList.Add("AA-12", aa12.Text);
    priceList.Add("HK416", hk416.Text);
    priceList.Add("HK417", hk417.Text);
    priceList.Add("HK XM8", hkxm8.Text);
    priceList.Add("M249 Saw", m249saw.Text);
    priceList.Add("АК-12", ak12.Text);
    priceList.Add("FN Scar SSR", fnscarssr.Text);
    priceList.Add("Gerber Downrange Tomahawk", tomahawk.Text);
    priceList.Add("HK XM8S", hkxm8s.Text);


}

  private void button2_Click(object sender, EventArgs e)
  {
      priceList.Clear();
      priceList.Add("КЗ-4", kz4.Text);
      priceList.Add("SBA Tank", tank.Text);
      priceList.Add("Гектор", gektor.Text);
      priceList.Add("JD Zivcas 2A", zivcas.Text);
      priceList.Add("Ригель", rigel.Text);
      priceList.Add("Альбатрос-Разведчик", razvedka.Text);
      priceList.Add("Альбатрос-Лазутчик", lazutka.Text);
      priceList.Add("Аметист", ametist.Text);
      priceList.Add("Йорш", iorsh.Text);
      priceList.Add("Спаннер", spanner.Text);
  }

  private async void button3_Click(object sender, EventArgs e)
  {
      if (tasks != 1)
      {
          tasks++;
          isRunning = true;
          var task = CheckAuction();
          await task;
      }
      else
      {
          isRunning = true;
      }
  }

Но почему-то, даже если в процессе программы я введу значения для всех предметов, то всегда вылезет ошибка:введите сюда описание изображения

Почему так происходит? И как дать программе понять, что если пользователь не ввел для данного предмета цену, то его нужно просто пропустить?


Ответы (1 шт):

Автор решения: Qwertiy

https://learn.microsoft.com/ru-ru/dotnet/api/system.collections.generic.dictionary-2.trygetvalue?view=net-8.0

if (!dict.TryGetValue(key, out val))

PS: А в какой магазин приходить за бесплатными товарами?)

→ Ссылка