Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/ssh/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# .aspx页面中出现奇怪的异常_C#_Asp.net_Asp.net Mvc_Asp.net Mvc 2 - Fatal编程技术网

C# .aspx页面中出现奇怪的异常

C# .aspx页面中出现奇怪的异常,c#,asp.net,asp.net-mvc,asp.net-mvc-2,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' -->

我有一个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页面的显示有关。有人能解释为什么会发生这种情况吗?

当你声明变量
image
时,给它一个初始值

string image = "";
您得到的错误表明变量在所有情况下都没有初始化(只有当
cond
为true时,才会初始化)


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

或者更好的做法是在if中添加一个else以设置为默认值:

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

如果你在寻找原因而不是解决方案(你已经知道),当你声明一个变量时,什么都不会发生。只有当你赋值时,编译器才会保留内存空间和所有东西

因此,试图访问尚未初始化的变量是无效的,因为机器内存中没有任何地方可供访问…目前还没有任何内容


这就像试图提起一个不存在的桶:它不是空桶..它不是满桶..没有可以提起的桶。

如果你真的想知道你的页面是如何编译的,你可以在构建时配置MVC来编译视图。在更熟悉的上下文中看到错误会很有启发性:谢谢。我来自E+C+Land,你对这个工作人员有完全的控制,我想我必须习惯C++中的所有限制。“简单地说就是让你用望远镜瞄准自己的脚。这不是一个限制。。。编译器在这里帮了你一个大忙。+1给spender。编译器正在帮助您避免犯愚蠢的错误。你称之为限制,我称之为日常任务的自动化。感谢你提供的详细信息,我找不到关于C#编译器如何工作的更多信息。是的,这稍微好一点,因为这样我们就少了一个任务。Thanks@devfreak通过使映像服务器端直接设置其源,您可以有0个分配:if(cond)Image1.Src=“somestring”;else Image1.Src=“somethingelse”;