У меня есть класс для списков UniqueListWithActions с методом конструктора
Код: Выделить всё
public UniqueListWithActions(List _list)
{
list = _list;
}
список объявлен как
но в методе ClearNulls отладка возвращает «null и False».
Код: Выделить всё
public void ClearNulls()
{
for (int i = list.Count - 1; i >= 0; i--)
{
Debug.Log(list[i] + " and " + (list[i] == null));
if (list[i] == null)
{
list.RemoveAt(i);
}
}
}
Я установил следующее, поместил его в пустой игровой объект, поместил два других пустых игровых объекта в список через инспектор, уничтожил один, так что ссылка отсутствовала, а затем нажал escape, и он все равно выдает «null и False».
Код: Выделить всё
public class ListTest : MonoBehaviour
{
public UniqueListWithActions uniqueList = new UniqueListWithActions(new List());
private void Update()
{
if (Input.GetKeyDown(KeyCode.Escape))
{
uniqueList.ClearNulls();
}
}
}
Я не понимаю, как это может быть настолько нулевым, что «нулевой» — это то, что возвращается в отладке, но не настолько «нулевым», чтобы list
!= null. Это не тот же кадр, в котором объект уничтожается, поскольку я делаю это вручную. Как я могу очистить все нулевые объекты в списке, если значение null не равно нулю?
Подробнее здесь: https://stackoverflow.com/questions/798 ... bj-null-as