Это ошибка, которая всегда возникает для локально определенных переменных (внутри метода или свойства, а не внутри класса). Хотя факт остается фактом, компилятору не нужно генерировать эту ошибку для работы, он делает специально для того, чтобы помочь вам определить потенциально неожиданные результаты в случае не всегда назначения ваши переменные. (Кто-то исправит меня, если я ошибаюсь, но по крайней мере некоторые предыдущие версии компилятора C # не проверяли неназначенные переменные в некоторых / всех случаях.)
Эквивалентно (вместо присвоения test = null
в объявлении) вы можете устранить ошибку, указав test = null
в блоке catch, поскольку это будет означать, что независимо от пути, по которому идет код, назначается переменная test
. Тем не менее, я думаю, что указанное вами разрешение (присвоение нулю в объявлении) является правильным - вы увидите это очень часто в C # -коде, который сильно разветвляется (с помощью операторов try-catch, if или любого другого) ) - и, честно говоря, это только помогает вам понять, для чего и когда вы присваиваете свои переменные, даже если это может показаться незначительным раздражением.