Доброе время суток.
Хочу с вами поделиться информацией о страшном баге, который не просто найти.
Суть в чем: допустим у вас есть класс SomeClass, у которого есть публичное поле int или float или bool, которое по умолчанию проинициализировано конкретным значением. Пример:
public class SomeClass
{
public int SomeValue = 1;
}
После чего вы в каком-то месте создаете экземпляр этого класса, используете инициализатор и приравниваете SomeValue — стандартное значение (ноль либо false в случае bool):
SomeClass a = new SomeClass { SomeValue = 0 };
В итоге a.SomeValue будет равно 1. Если же в инициализаторе будет не стандартное значение — всё будет работать корректно. Например:
SomeClass a = new SomeClass { SomeValue = 5 };
a.SomeValue будет равно 5.