Элемент добавлен в словарь, но при его получении вылезает ошибка о том, что он не существует
У меня есть такой метод
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
→ Ссылка
if (!dict.TryGetValue(key, out val))
PS: А в какой магазин приходить за бесплатными товарами?)