странное исключение на странице .aspx - PullRequest
0 голосов
/ 18 ноября 2010

У меня есть страница aspx, на которой у меня есть что-то вроде этого:

<%
    string image;
    if(cond)
       image = "somestring";
%>

...

<% if (cond) { %>
    <img src="<%= image %>" /> <!-- HereI get CS0165 exception: Use of unassigned local variable 'image' -->
<% } else { %>
    <div> ... </div>
<% } %>

Итак, мой вопрос, почему я получаю исключение? Если я напишу string image = "";, это исключение исчезнет. Это очень странно. Я предполагаю, что исключение как-то связано с представлением страницы aspx. Может кто-нибудь объяснить, почему это происходит?

Ответы [ 3 ]

8 голосов
/ 19 ноября 2010

Когда вы объявляете свою переменную image, присвойте ей начальное значение.

string image = "";

Полученная ошибка указывает на то, что переменная не была инициализирована во всех случаях (она инициализируется, только если cond имеет значение true).

Это не имеет ничего общего с содержанием на странице .aspx. Вы получите ту же ошибку в коде позади.

1 голос
/ 19 ноября 2010

Если вы придерживаетесь причины, а не решения (которое вы уже знаете) - при объявлении переменной ничего не происходит.Только когда вы назначаете что-то, компилятор резервирует пространство памяти и все.

Поэтому попытка получить доступ к переменной, которая еще не инициализирована, недопустима, потому что в памяти машины нет места, куда можно перейти ... нет ничегопока что.

Это все равно что пытаться поднять ведро, которого там нет: это не пустое ведро ... это не полное ведро ... нет ведра, которое можно поднять.

1 голос
/ 19 ноября 2010

Или еще лучше добавить еще один к вашему, если установить значение по умолчанию:

string image;
if(cond)
  image = "somestring";
else
  image = String.Empty;
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...