2016-03-24 1 views
-1

Я делаю базовую программу чата как тезис, и я столкнулся с этой проблемой.Использование неназначенной переменной в корпусе коммутатора в C#

enter image description here

Как вы можете видеть на картинке, это дает мне неприсвоенную переменную ошибку в строке 107, но он отлично работает после (как в строке 125). Ключ коммутатора всегда начинается с case 1, в котором я создаю новую форму UserLogin, называемую login. После этого он решает, что он должен перейти к случаю 2 или 3. Ни у одного из них нет какой-либо неназначенной переменной ошибки, кроме строки 107. Я действительно не знаю, почему это происходит.

+0

Включает оператор switch и объявление 'login' –

+1

Если вы прокомментировали строку 107, вы, вероятно, увидите ту же ошибку на следующей строке, которая использовала' login'. Компилятор только флаги при первом использовании переменной. –

+4

Пожалуйста, разместите свой код, а не скриншот вашего кода. – vesan

ответ

3

Несмотря на то, что вы знаете, что вы нажмете номер дела 1 до удара 2 или 3, компилятор этого не сделает.

Необходимо присвоить login значение перед блоком switch, даже если это всего лишь null.

login = null; 

switch (...) 
{ 
    case 1: 
     login = new UserLogin(); 
     ... 

Если вы знаете, что всегда ударит случай 1 первым, рассмотрит только назначение Логина нового UserLogin, прежде чем вы даже войти в switch заявлении.

3

Это потому, что единственным местом, где назначается переменная, является case 1. Вам нужно назначить его вне оператора switch, так как существует вероятность того, что case 1 никогда не будет выполняться, поэтому переменная никогда не будет назначена.

 Смежные вопросы

  • Нет связанных вопросов^_^