在C#调试过程,发现的一个很奇怪的问题,有知道的来讨论一下,是怎么回事,刚才发了一个有些朋友没有看明白,重新整理后再发一次
一个类,其中行号为了方便说明加上去了class Anima
{
1 private string name = "";
2 public Anima(string name)
3 {
4 this.name = name;
5 }
}
实例化一个类:
Anima an = new Anima("a") //按F9请在这里下断点
按F5运行,按F11,
程序运行到第1句:这时private string name = "a"(正常情况应该是name=null,字段在没有赋值时默认为null);
按F11
程序运行到第2句:这时private string name = "a"(正常情况应该是name="");
按F11->第3句
按F11->第4句,给这private string name 赋值为 a(正常情况name="a");
最后为了印证一下在字段与构造方法中参数名称不一致时的情况是否会发生上面的问题,修改了一下再调试观察,不再出现上面的问题,请大家说说看是什么原因
class Anima
{
1 private string name = "";
2 public Anima(string Name)
3 {
4 this.name = Name;
5 }
} --------------------编程问答-------------------- 晕了。。。。 --------------------编程问答-------------------- 跟你理解误差原因:这个name是参数 而不是类的成员变量
当参数名称不一致时,name则一直是类的成员变量,而Name的值还是跟以前的参数值一样 --------------------编程问答-------------------- 倒塌!!了 --------------------编程问答-------------------- 很好很cctv --------------------编程问答-------------------- 有什么可晕的,
”程序运行到第1句:这时private string name = "a"(正常情况应该是name=null,字段在没有赋值时默认为null); “
你此时监控的变量是的参数变量name,而并不是类的私有变量name,如果你在监控窗体中同时监控两个变量就知道了。一个是name,另一个是this.name。
也就是你在中断的时候在监视窗体中输入name(型参变量),this.name(类私有变量)你就会知道了是你自己对象搞错了,小心人家告你非礼!!!!!!!
补充:.NET技术 , C#