一段代码:
using System;
namespace MyNameSpace
{
public class Person
{
public virtual void Print()
{
Console.WriteLine(base.ToString());
Console.WriteLine(this.ToString());
}
}
public class Student : Person
{
public override void Print()
{
base.Print();
}
}
public class MyClass
{
public static void Main()
{
Person p = new Person();
p.Print();
Student s = new Student();
s.Print();
Console.ReadKey();
}
}
}
有关base和this两个不清楚,这个输出啥,为啥这样输出啊???请指教……
using System;
namespace MyNameSpace
{
public class Person
{
public virtual void Print()
{
Console.WriteLine(base.ToString());
Console.WriteLine(this.ToString());
}
}
public class Student : Person
{
public override void Print()
{
base.Print();
}
}
public class MyClass
{
public static void Main()
{
Person p = new Person();
p.Print();
Student s = new Student();
s.Print();
Console.ReadKey();
}
}
}
有关base和this两个不清楚,这个输出啥,为啥这样输出啊???请指教……
this 表示 调用本类方法
this 本类指针
MyNameSpace.Person
MyNameSpace.Person
MyNameSpace.Student
MyNameSpace.Student在Main方法中s.Print()为什么不输出 MyNameSpace.Person 呢?
我以为
Student类继承了Person,重写了Print方法,但base.Print()应该是使用Person类中的Print()方法,所以要输出MyNameSpace.Person。
呵呵,跟一绕口令似的。
在Person类中如果修改代码
Console.WriteLine(base.ToString());
Console.WriteLine(this.ToString());
使之成为
Console.WriteLine("Person");
那么就会输出两个“Person”的。
namespace consolepro
{ public class Person
{
public virtual void Print()
{
Console.WriteLine(base.ToString());
Console.WriteLine(this.ToString());
}
public override string ToString()
{
return "person.tostring.";
}
}
public class Student : Person
{
public override void Print()
{
Console.WriteLine(base.ToString());
Console.WriteLine(this.ToString());
} public override string ToString()
{
return "student.tostring.";
}
}
public class MyClass
{
public static void Main()
{
Person p = new Person();
p.Print();
Student s = new Student();
s.Print();
Console.ReadKey();
}
}}