我有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页面的呈现有关。有人可以解释为什么会这样吗?
答案 0 :(得分:8)
声明变量image
时,请为其指定初始值。
string image = "";
您获得的错误表明该变量尚未在所有情况下初始化(仅在cond
为真时才初始化)。
这与包含在.aspx页面中无关。您将在后面的代码中得到相同的错误。
答案 1 :(得分:1)
或者甚至更好的是将if添加到if设置为默认值:
string image;
if(cond)
image = "somestring";
else
image = String.Empty;
答案 2 :(得分:1)
如果您追求原因而不是解决方案(您已经知道) - 当您声明变量时,没有任何反应。只有在分配内容时,编译器才会保留内存空间和所有内容。
因此尝试访问尚未初始化的变量是无效的,因为机器的内存中没有任何地方可以去......现在还没有。
这就像试图举起一个不在那里的水桶:它不是空桶......它不是一个满桶......没有水桶可以举起。