static void Main(string[] args)
{
Robot r1 = new Robot();
r1.Name = "智能1号";
Robot r2 = new Robot();
r2.Name = "智能2号";
Robot r;
int i = 0;
Console.WriteLine("请选择机器人:1→智能1号,2→智能2号");
while (i == 0)
{
string number = Console.ReadLine();
if (number == "1")
{
r = r1;
i = 1;
}
else if (number == "2")
{
r = r2;
i = 1;
}
else
{
Console.WriteLine("输入有误,请重新输入。");
}
}
r.SayHello();
while (true)
{
string str = Console.ReadLine();
r.Speak(str);
} Console.ReadKey();
}程序如上,Robot是我定义的一个类,上面这段程序就是定义两个Robot对象,然后让用户选择调用哪个对象,我用新建的对象r来指向的,但程序运行会出现提示:r是未定义的对象。提示行分别是r.SayHello();和r.Speak(str);这两句。这两个都是类里面的方法。请问这是怎么回事?类未定义
{
Robot r1 = new Robot();
r1.Name = "智能1号";
Robot r2 = new Robot();
r2.Name = "智能2号";
Robot r;
int i = 0;
Console.WriteLine("请选择机器人:1→智能1号,2→智能2号");
while (i == 0)
{
string number = Console.ReadLine();
if (number == "1")
{
r = r1;
i = 1;
}
else if (number == "2")
{
r = r2;
i = 1;
}
else
{
Console.WriteLine("输入有误,请重新输入。");
}
}
r.SayHello();
while (true)
{
string str = Console.ReadLine();
r.Speak(str);
} Console.ReadKey();
}程序如上,Robot是我定义的一个类,上面这段程序就是定义两个Robot对象,然后让用户选择调用哪个对象,我用新建的对象r来指向的,但程序运行会出现提示:r是未定义的对象。提示行分别是r.SayHello();和r.Speak(str);这两句。这两个都是类里面的方法。请问这是怎么回事?类未定义
你就这样定义r么????
VS中你定义一个对象没有初始化,在if,else中初始化的话,就必须在所有的if,else中都需要初始化,也就是在
else
{
//r=new Robot();
Console.WriteLine("输入有误,请重新输入。");
}也需要初始化,在后面才可以直接调用该对象中的方法或者字段等,否则都报对象未初始化错误
static void Main(string[] args)
{
Robot r1 = new Robot();
r1.Name = "智能1号";
Robot r2 = new Robot();
r2.Name = "智能2号";
Robot r;
Console.WriteLine("请选择机器人:1→智能1号,2→智能2号");
string number = Console.ReadLine();
if (number == "1")
{
r = r1;
}
else
{
r = r2;
}
r.SayHello();
while (true)
{
string str = Console.ReadLine();
r.Speak(str);
} Console.ReadKey();
}
{
r = r1;
}
else
{
r = r2;
}
你这样写,无论哪种情况都赋值了。
你问题中的代码,else 里边没赋值。
static void Main(string[] args)
{
Robot r1 = new Robot();
r1.Name = "智能1号";
Robot r2 = new Robot();
r2.Name = "智能2号";
Robot r;
Console.WriteLine("请选择机器人:1→智能1号,2→智能2号");
string number = Console.ReadLine();
if (number == "1")
{
r = r1;
}
else
{
r = r2;
}
r.SayHello();
while (true)
{
string str = Console.ReadLine();
r.Speak(str);
} Console.ReadKey();
}
if (number == "1")
{
r = r1;
}
else
{
r = r2;
} 你这两个地方都给他赋值了啊,相当于初始化了,所以可以用
static void Main(string[] args)
{
Robot r1 = new Robot();
r1.Name = "智能1号";
Robot r2 = new Robot();
r2.Name = "智能2号";
Robot r;
Console.WriteLine("请选择机器人:1→智能1号,2→智能2号");
string number = Console.ReadLine();
if (number == "1")
{
r = r1;
}
else
{
r = r2;
}
r.SayHello();
while (true)
{
string str = Console.ReadLine();
r.Speak(str);
} Console.ReadKey();
}
if (number == "1")
{
r = r1;
}
else
{
r = r2;
} 你这两个地方都给他赋值了啊,相当于初始化了,所以可以用
正解。
static void Main(string[] args)
{
Robot r1 = new Robot();
r1.Name = "智能1号";
Robot r2 = new Robot();
r2.Name = "智能2号";
Robot r;
Console.WriteLine("请选择机器人:1→智能1号,2→智能2号");
string number = Console.ReadLine();
if (number == "1")
{
r = r1;
}
else
{
r = r2;
}
r.SayHello();
while (true)
{
string str = Console.ReadLine();
r.Speak(str);
} Console.ReadKey();
}
if (number == "1")
{
r = r1;
}
else
{
r = r2;
} 你这两个地方都给他赋值了啊,相当于初始化了,所以可以用
了解了,初始化的问题。谢谢啊!