.aspx页面中的奇怪异常

时间:2010-11-18 20:58:47

标签: c# asp.net asp.net-mvc asp.net-mvc-2

我有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 个答案:

答案 0 :(得分:8)

声明变量image时,请为其指定初始值。

string image = "";

您获得的错误表明该变量尚未在所有情况下初始化(仅在cond为真时才初始化)。

这与包含在.aspx页面中无关。您将在后面的代码中得到相同的错误。

答案 1 :(得分:1)

或者甚至更好的是将if添加到if设置为默认值:

string image;
if(cond)
  image = "somestring";
else
  image = String.Empty;

答案 2 :(得分:1)

如果您追求原因而不是解决方案(您已经知道) - 当您声明变量时,没有任何反应。只有在分配内容时,编译器才会保留内存空间和所有内容。

因此尝试访问尚未初始化的变量是无效的,因为机器的内存中没有任何地方可以去......现在还没有。

这就像试图举起一个不在那里的水桶:它不是空桶......它不是一个满桶......没有水桶可以举起。