C#初学,直观跟C++区别蛮大的

Sheldon_ 2015-07-17 03:21:55
自己新建了一个类,然后输入之后输出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();
}
}
}
...全文
100 9 打赏 收藏 转发到动态 举报
写回复
用AI写文章
9 条回复
切换为时间正序
请发表友善的回复…
发表回复
於黾 2015-07-17
  • 打赏
  • 举报
回复
当然像你之前的改法 把外部类里的函数定义成静态的 那么在静态函数里调用其他静态函数,也是没有问题的 或者在实例函数里调用静态函数,都是没有问题的 但是在静态类里调用实例函数,它又区分不出你到底要调用的是哪个实例的对象,不就冲突了
於黾 2015-07-17
  • 打赏
  • 举报
回复
既然是静态函数,那么这个函数是与当前类的实例无关的 你引用了一个跟当前实例有关的对象,当然就不能对它直接操作 要么你在外面这样定义 static CM1 cm = new CM1(); 也是可以的
於黾 2015-07-17
  • 打赏
  • 举报
回复
把CM1 cm = new CM1();这个定义放到Main函数里面 你在静态函数之外定义了一个非静态的对象 当然不能直接调用
Sheldon_ 2015-07-17
  • 打赏
  • 举报
回复
引用 6 楼 Z65443344 的回复:
把CM1 cm = new CM1();这个定义放到Main函数里面 你在静态函数之外定义了一个非静态的对象 当然不能直接调用
原来是这样,我还把新建类里的改成了静态也是可以的
拜一刀 2015-07-17
  • 打赏
  • 举报
回复
上学的时候看了眼c#示例代码,找不到main我就默默退出了orz
Sheldon_ 2015-07-17
  • 打赏
  • 举报
回复
引用 2 楼 mjp1234airen4385 的回复:
(new Program()).cm.ReadFirstName(); (new Program()).cm.OutFirstName(); 你这是做什么,都新建类了,当然是没有值了。 cm.ReadFirstName(); cm.OutFirstName(); 这样就好
这样Main是静态的,新建类里不是静态的报错啊
mjp1234airen4385 2015-07-17
  • 打赏
  • 举报
回复
(new Program()).cm.ReadFirstName(); (new Program()).cm.OutFirstName(); 你这是做什么,都新建类了,当然是没有值了。 cm.ReadFirstName(); cm.OutFirstName(); 这样就好
Poopaye 2015-07-17
  • 打赏
  • 举报
回复
你创建了两个Program,值在第一个Program.cm里 在任何语言里这样写都是没值的

110,536

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Web++
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧