namespace web
{
public class web1
{
....
private void Page_Load(object sender, System.EventArgs e)
{
web2 xiao=null;
xiao.method();
}
}
public class web2
{
public void method();
....
}
}
上面这段c#代码,编译能通过,但运行抱错说xiao没有实例化。当然xiao的确是个空引用,但为什么编译能通过???运行时候才有错误???欢迎大家指教!
{
public class web1
{
....
private void Page_Load(object sender, System.EventArgs e)
{
web2 xiao=null;
xiao.method();
}
}
public class web2
{
public void method();
....
}
}
上面这段c#代码,编译能通过,但运行抱错说xiao没有实例化。当然xiao的确是个空引用,但为什么编译能通过???运行时候才有错误???欢迎大家指教!
解决方案 »
- Roles在vs2010怎么用?
- 请大家谈谈使用ASP.NET AJAX(Atlas)的心得体会经验
- 关于反回多刻录集的问题...
- 哪位大侠给asp.net揭秘 中文版的联接呀
- ===============请问各位高手,这样能被sql注入攻击吗?==================
- OA应该包括哪些功能?
- 问一些关于Web控件的问题,希望各位大哥帮忙,(急,在线等)
- 可能是连接数据库的问题,向您请教谢谢。(再线等)
- 发布网站出现的一个问题`
- ASP.NET高手必进~~~~~~~~~~~~~~~~~~~~~~~
- 我怎么看不见我的cookie 呢 着了半天没有找到···
- 获得数据库内容问题,急,
xiao=getWeb2(str);
xiao.method();
如果是这样,而且getWeb2()还要是读数据库,根据str参数来确定是否返回null还是web2的一个实例,你让编译器去确定.str要再去数据库中几百万条数据中,不同的数据返回不一样.即便是做出这样的编译器,编译时也要花很长时间来完成再说要有这样的编译器,把所有的错误都找出来了,就不用测试了
如下例子:
int i=int.Parse(txtA.Text.Trim());
int b=100/i;
它肯定能通过编译。
但是在运行时,如果你在txtA文本框中输了的不是数字,第一行肯定会出错。如果输入的是0,第二行肯定会出错。
编译的任务:语义、文法等等方面的检查,你上面的例子在编译时不出错。
执行的任务:对象、变量空间的分配等动作。你上面的 web2 xiao=null;根本就没有分配到空间
当然也找不到对象方法的地址,所 xiao.method();所以在执行时会出错。