自己新建了一个类,然后输入之后输出firstName没有值,单步调试显示firstName没传值怎么回事? namespace _CM1 { class CM1 { string firstName; string lastName; public void ReadFirstName() { firstName = Console.ReadLine(); } public void OutFirstName() { Console.WriteLine("You name is: ",firstName); } } } namespace _CM1 { class Program { CM1 cm = new CM1(); static void Main(string[] args) { Console.WriteLine("Please input your name:\n"); (new Program()).cm.ReadFirstName(); (new Program()).cm.OutFirstName(); } } } |
|
5分
#1 |
你创建了两个Program,值在第一个Program.cm里
在任何语言里这样写都是没值的 |
5分
#2 |
(new Program()).cm.ReadFirstName();
(new Program()).cm.OutFirstName(); 你这是做什么,都新建类了,当然是没有值了。 cm.ReadFirstName(); cm.OutFirstName(); 这样就好 |
#3 |
回复2楼: 这样Main是静态的,新建类里不是静态的报错啊 |
#5 |
上学的时候看了眼c#示例代码,找不到main我就默默退出了orz
|
20分
#6 |
把CM1 cm = new CM1();这个定义放到Main函数里面
你在静态函数之外定义了一个非静态的对象 当然不能直接调用 |
#7 |
回复6楼: 原来是这样,我还把新建类里的改成了静态也是可以的 |
#8 |
既然是静态函数,那么这个函数是与当前类的实例无关的
你引用了一个跟当前实例有关的对象,当然就不能对它直接操作 要么你在外面这样定义 |
#9 |
当然像你之前的改法
把外部类里的函数定义成静态的 那么在静态函数里调用其他静态函数,也是没有问题的 或者在实例函数里调用静态函数,都是没有问题的 但是在静态类里调用实例函数,它又区分不出你到底要调用的是哪个实例的对象,不就冲突了 |