(всхлипывая от разочарования)Как избежать NRE при чтении тэга кнопки C#
Как избежать раздражающего NRE в этом случае? Результат кода правильный, но я хочу избавиться от NRE.
фон:
Есть некоторые кнопки на форме, некоторые из которых представляют собой место классной комнаты. Другие кнопки не имеют значения, потому что мне нужны только сидения, и только кнопки сидений имеют метки, которые имеют ценность.
Итак, я просматриваю все кнопки и читаю их теги, если он не пуст, а затем держите эту кнопку в списке. Остальные игнорируются.
Однако, когда код запускается, NRE появляется в четвертой строке, строка начинается с «try».
foreach (Button seatbutton in this.Controls)
{
string betta;
try { betta = seatbutton.Tag.ToString(); }
catch { betta = ""; }
if (!string.IsNullOrEmpty(betta))
{
seatbuttons.Add(seatbutton);
}
}
Это самый короткий, самый простой пример такого типа NRE в моем коде. Есть еще несколько.
Я искал в Интернете, и большинство ответов относятся к следующим темам: «Плохие привычки кодирования вызвали это».
Как вы, наверное, можете сказать, я совершенно новичок в этом деле, и у меня даже не было времени на создание привычек. Можете ли вы помочь? Возможно, с некоторыми советами по ХОРОШЕМУ кодированию?
T_T спасибо!
@MickyD Да! Я прочитал это, прежде чем я спросил: D. И я понимаю, что это место. Но я не понимаю, почему назначение этого значения null для строковой переменной не может быть выполнено ... Ну, я ясно могу, потому что это то, что я сделал в части «Catch» ...: S – Momom0
@ Momom0 Это не то, что вы делаете. Вы сначала вызываете 'ToString()' на нем, и вы не можете вызывать метод по ссылке «null». –
_ «почему присвоение этого нулевого значения строковой переменной не может быть выполнено» _ - ну, вы можете, но не можете попытаться вызвать метод экземпляра на нем. Это не объективно-c – MickyD