标题: 这个属于运行时错误还是编译错误??? [打印本页] 作者: 赵威 时间: 2013-5-4 22:53 标题: 这个属于运行时错误还是编译错误??? static void Main(string[] args)
{
Person per=new person();
per=null;
per.Name="zzz";
Console.ReadKey();
}
public class Person
{
public string Name
{
get;
set;
}
public string Gender
{
get;
set;
}
public int Age
{
get;
set;
}
}
这个属于运行时错误还是编译错误????为什么?作者: 张伟86 时间: 2013-5-4 23:27 本帖最后由 张伟86 于 2013-5-4 23:53 编辑
此例当属运行时错误,如果不计较楼主在语句“Person per = new person();”在范的书写错误的话,就只是运行时错误了。
为什么是运行时错误?我们使用IDE下的编译器编译程序,既然编译器不报错,自然不是编译错误,而楼主的程序也不报错,就剩下运行时错误了。
而产生错误的原因就是:“per = null;”语句使得per指向内存重新为空,也就相当于per没有被初始化,运行时就报错了。将语句“Person per = new person();”中的 “= new person()”注释掉,重新编译程序,会发现跟楼主现在的程序是一样的报错信息:未将对象引用设置到对象的实例。
下面附上调试图解:主要注意per的值变化