|
自己新建了一个类,然后输入之后输出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 |
当然像你之前的改法
把外部类里的函数定义成静态的 那么在静态函数里调用其他静态函数,也是没有问题的 或者在实例函数里调用静态函数,都是没有问题的 但是在静态类里调用实例函数,它又区分不出你到底要调用的是哪个实例的对象,不就冲突了 |