Pre-PS: Вдохновленный комментарием Джона Скита выше, Я предлагаю вам сделать следующее:
- (Необязательно: Создатьрезервная копия вашего текущего кода.)
- Упростите свой код, постепенно удаляя его части, пока предупреждение не исчезнет. *
- Как только предупреждение исчезнет, вы узнаетекакие части вашего кода вызвали ошибку (а именно ту часть, которую вы удалили последней), и тогда вы сможете ее понять.
( Откуда этот совет? → Вы уже видели, что вы можете снять предупреждение, добавив , добавив код . Я думаю, что ваше понимание проблемы будет еще лучше, если вы сделаете обратное, то есть , удалив код чтобы понять суть этой проблемы.)
main.property
может иметь только значения 0, 1, 2 и 98, и вы сказали, что ваш код (CreateMain
) правильно работает в этом отношении.
Таким образом, я предполагаю, что VS предполагает, что main.property
всегда равно 0. WПридется прийти к такому выводу, я не знаю.Возможно, он думает, что он не был инициализирован.
Я написал некоторый код, похожий на ваш, и я не получаю это предупреждение - я даже не получаю предупреждение, когда объявляю Main.property
как readonly
и инициализируйте его равным 0. Таким образом, вы, вероятно, попали в одну из следующих ситуаций, когда анализ кода VS / неисправности отладчика.
Возможные (хотя и маловероятные) причины для рассмотрения:
Есть ли какой-нибудь путь кода, где Main.property
не инициализирован?
Поскольку Main.property
имеет тип byte
(по вашему мнению), может ли это бытьчто предупреждение каким-то образом вызвано переполнением или присвоением переполнения?(Что произойдет, если вы измените тип на int
?)
Может быть, main
затеняет другую переменную main
?