namespace ConsoleApplication3
{
class Program
{
static void Main(string[] args)
{
Person[] a = new Person[3];
Random sum = new Random();//位置1
for (int i = 0; i < a.Length; i++)
{
//位置2
int b = sum.Next(1, 4);
switch (b)
{
case 1:
a[i] = new Student();
break;
case 2:
a[i] = new Yeshou();
break;
case 3:
a[i] = new Person();
break;
}
}
for (int i = 0; i < a.Length; i++)
{
if (a[i] is Student)
{
((Student)a[i]).StudentHi();
}
else if (a[i] is Yeshou)
{
((Yeshou)a[i]).YeshouHi();
}
else
{
a[i].PersonHi();
}
}
Console.ReadKey();
}
class Person
{
public void PersonHi()
{
Console.WriteLine("我是人类。");
}
}
class Student : Person
{
public void StudentHi()
{
Console.WriteLine("我是学生。");
}
}
class Yeshou : Person
{
public void YeshouHi()
{
Console.WriteLine("我是野兽。");
}
}
}
}
希望实现的效果:显示不同的 “我是**”。
异常情况:Ramdom那句话,我以为放在位置1和位置2效果是一样的。但是
放在位置1:效果实现。
放在位置2:直接调试时,效果是不同的“我是**”。
逐语句或逐过程时,效果却又是相同的“我是**”。
其中原因是?各位大神,我初学。求多多指教。