C#中一个奇怪的事情,今天在调试中发现,大家都来试试看,是什么原因

问题描述

一个类classAnima{privatestringname="";publicAnima(stringname){this.name=name;}}实例化这个类Animaan=newAnima("a")//在这里下断点F9按F5,起动,再按一次F11此时把鼠标移动到这句的name上时privatestringname="";可以发现,name的值为a了;同时publicAnima(stringname)句中的name的值也为a;最后我把publicAnima(stringname)句改成publicAnima(stringName)再进行调试,发现运行到privatestringname="";时,name变为了null,运行离开这步时值为""(正确);以上这样的现象是怎么回事呢,听听大家的说法?

解决方案

解决方案二:
你不知道.c#区分大小写吗?建议你去看一下,c#基础篇,看看命名规则.
解决方案三:
最后我把publicAnima(stringname)句改成publicAnima(stringName)this.name=name;
解决方案四:
引用楼主linxiaofeng0816的帖子:

name变为了null,运行离开这步时值为""(正确);

正確嗎?
解决方案五:
看样子,大家还没有明白我说的意思,最好请大家动手逐行调试看看结果最先的类是这样子的:classAnima{1privatestringname="";2publicAnima(stringname)3{4this.name=name;5}}实例化一个类:Animaan=newAnima("a")//按F9请在这里下断点按F5运行,按F11,程序运行到第1句:这时privatestringname="a"(按常规这是应该是name=null);按F11程序运行到第2句:这时privatestringname="a"(按常规这是应该是name="");按F11->第3句按F11->第4句,给这privatestringname赋值为a(按常规这是应该是name="a");
解决方案六:
为改成classAnima{1privatestringname="";2publicAnima(stringName)3{4this.name=Name;5}}只是为了应征一下在字段与构造方法中参数不一致时的情况,请大家不要误会
解决方案七:
为改成classAnima{1privatestringname="";2publicAnima(stringName)3{4this.name=Name;5}}只是为了应征一下在字段与构造方法中参数名称不一致时的情况,请大家不要误会
解决方案八:
呵呵。。
解决方案九:
引用3楼gen06的回复:

引用楼主linxiaofeng0816的帖子:name变为了null,运行离开这步时值为""(正确);正確嗎?

在没有赋值之前name的值不是""而是null
解决方案十:
是由于调用了构造函数
解决方案十一:
哈哈```愚人愚己
解决方案十二:
引用9楼virusplayer的回复:

是由于调用了构造函数

不对,我看了一下逐行运行情况,类的初始化是在对字段检查运行完了后在运行的构造函数进行相关的操作
解决方案十三:
那是由于字段name与参数name所指地址相同,你看到的其实是参数name的值,你可以这样试一下:publicclassAnima{stringname="";publicAmina(stringname){this.name="b";}}

断点来stringname="";时,看到name是等于"a"的。所以并不是“还没运行到this.name=name;就已经赋值。”
解决方案十四:
stringname="";publicAmina(stringname)name他们的作用域是一样的,也就是一个变量
解决方案十五:
聪明的编译器
解决方案:
引用4楼linxiaofeng0816的回复:

看样子,大家还没有明白我说的意思,最好请大家动手逐行调试看看结果最先的类是这样子的:classAnima{1privatestringname="";2publicAnima(stringname)3{4this.name=name;5}}实例化一个类:Animaan=newAnima("a")//按F9请在这里下断点按F5运行,按F11,程序运行到第1句:这时privatestringname="a"(…

你监视的不对,应该监视this.nameprivatestringname="";publicAnima(stringname){this.name=name;}编译器帮你更改为:privatestringname;//所以当你把鼠标移到此行的name上时,等于查看参数name,更改名字可避免这个问题publicAnima(stringname){this.name="";this.name=name;}正确监视应该是监视this.name

时间: 2024-10-28 23:15:32

C#中一个奇怪的事情,今天在调试中发现,大家都来试试看,是什么原因的相关文章

java 接口 接口实现-Java中一个类如何实现多个接口中同名同参返回值不同的方法?

问题描述 Java中一个类如何实现多个接口中同名同参返回值不同的方法? 如:` class A implements Interface1,Interface2{ //这里该怎么写呢? } interface Interface1{ public void method(); } interface Interface2{ public int method(); } 解决方案 class A implements Interface1,Interface2{ //直接写啊 public voi

java swing中一个JTree如何在多个panel中显示

问题描述 java swing中一个JTree如何在多个panel中显示 要实现的功能是 需要在2个panel(A, B )中显示用户组的树结构, 其中有一个panel(B)中提供了对树的增删改,运行程序首先显示A, 通过A上的按钮点击事件显示B, 要在B更改同时更新A上的显示情况, 现在遇到的情况是:当点击A上的按钮显示B时,A上的tree就不见了: 怎么解决啊? A的部分代码 DefaultMutableTreeNode root = new DefaultMutableTreeNode("

asp.net中一个奇怪的问题

问题描述 我给一个按钮写了一个添加事键,用到了循环代码如下:protectedvoidButton7_Click(objectsender,EventArgse){inti=0;intj=0;boolisSH=CheckBox1.Checked;boolisOnLine=CheckBox2.Checked;stringfileName=this.FileUpload1.PostedFile.FileName;con.Open();for(i=0;i<ListBox2.Items.Count;i+

CSS的BUG:IE6中一个奇怪的现象!

css 先声明,是偶的同事xpoint遇到的,不是偶首发的.不说这句话偶肯定挨揍...当ID与Class组合使用的时候在IE6下无法正常显示. CSS代码: #f{ font-size:20px} #f.a{color: red;} #f.b{color: black; font-size:50px} #f.c{color: blue;} #f.d{color: orange;} HTML代码: <div id="f" class="a">a</d

mfc-MFC中一个关于异常的问题

问题描述 MFC中一个关于异常的问题 在VS中,为什么会让我这样写CATCH,中间的逗号是什么意思,没有的话就出错,说让我输入")" CATCH(CFileException,e) 解决方案 http://blog.chinaunix.net/uid-21411227-id-1826958.html 这里有详细一些的介绍,以及宏的定义. 注意区分作为C++语法的try catch和MFC的宏TRY CATCH. 解决方案二: CATCH是MFC中的一个宏,在MFC诞生的时候,C++还很

java中一个商品列表集合简单问题

问题描述 java中一个商品列表集合简单问题 java中一个商品列表集合简单问题 java中一个商品列表集合简单问题 肯德可以理解为对象,java一切都是对象 那么可以理解为一个类吗可以理解为一个数组吗,可以理解为一种数据泪腺吗 解决方案 对象集合类是类,但不能说对象集合的对象是一个类,对象就是类的实例,和类是不等的.数组是指基本数据类型集合.比如int [] arrs = new int[]{},而List 等类创建的对象集只能称为集合.不能理解为数据类型.数据类型只有基本类型和引用类型.

结构体数组-C++中一个很奇怪的数组

问题描述 C++中一个很奇怪的数组 static const AP_Scheduler::Task scheduler_tasks[] PROGMEM = { { ins_update, 1, 1000 }, { one_hz_print, 50, 1000 }, { five_second_call, 250, 1800 }, }; 注:AP_Scheduler是一个类,Task是这个类的结构体成员,一下是Task的定义: struct Task { task_fn_t function; u

java中输出0到128的Unicode遇到了一个奇怪问题,不包含128,则不会输出

问题描述 packageapi.io;importjava.io.FileWriter;importjava.io.IOException;publicclassTestFileWriter{publicstaticvoidmain(String[]args){FileWriterwe=null;try{we=newFileWriter("d:\java\SuccessRoad\src\api\io\satisfy");for(inti=0;i<129;i++){//128为什么

ios-遇到了一个奇怪的问题

问题描述 遇到了一个奇怪的问题 今天我改了几处代码,在界面上屏蔽删除了一些东西,在模拟器上运行没问题,但是部署到真机上后,竟然是没改代码前的效果,那些删掉的屏蔽掉的东西竟然还在.这是怎么回事? 试了好几次都这样,把真机上的app删掉重装还是这样. 解决方案 好奇怪,试试clean一下 解决方案二: 把你开发机器上的生成文件都删除了,重新生成,再部署. 解决方案三: 在分析相关参数对性能影响的时候,遇到个奇怪的问题.在效果全开的情况下:1.?????? 单独关闭Caustics效果2.??????