不运行程序,你知道结果是什么样的吗?
运行完了,看到结果,你知道为什么吗?
知道的话请给我解释一下,实在想不通!!!!!!!!!!!
复制内容到剪贴板代码:
using System;
using System.Collections.Generic;
using System.Text;namespace ConsoleApplication
{
class Program
{
static void Main(string[] args)
{
Program obj = new Program();
Object o = obj;
System.Console.WriteLine(obj);
System.Console.WriteLine(o);
System.Console.WriteLine(obj.ToString());
System.Console.WriteLine(o.ToString());
}
public new string ToString()
{
return "hello";
}
}
}这是我自己测试的结果
正确的运行结果:
ConsoleApplication.Program
ConsoleApplication.Program
hello
ConsoleApplication.Program
运行完了,看到结果,你知道为什么吗?
知道的话请给我解释一下,实在想不通!!!!!!!!!!!
复制内容到剪贴板代码:
using System;
using System.Collections.Generic;
using System.Text;namespace ConsoleApplication
{
class Program
{
static void Main(string[] args)
{
Program obj = new Program();
Object o = obj;
System.Console.WriteLine(obj);
System.Console.WriteLine(o);
System.Console.WriteLine(obj.ToString());
System.Console.WriteLine(o.ToString());
}
public new string ToString()
{
return "hello";
}
}
}这是我自己测试的结果
正确的运行结果:
ConsoleApplication.Program
ConsoleApplication.Program
hello
ConsoleApplication.Program
呵呵,学习,支持楼主
原因很简单public new string ToString()
代表了ToString不是从object过来的方法
System.Console.WriteLine(obj); //调用object的tostring显示
System.Console.WriteLine(o); //调用object的tostring显示
System.Console.WriteLine(obj.ToString()); //调用ConsoleApplication.Program 的tostring显示,此出很明确地知道obj是ConsoleApplication.Program类型,实际地调用
System.Console.WriteLine(o.ToString());//调用object的tostring显示,这里并不知道o是ConsoleApplication.Program 类型,虚调用
会误导群众的,一般人是不会注意这个new的
System.Console.WriteLine(o); //o的类型是object{ConsoleApplication.Program}
System.Console.WriteLine(obj.ToString()); //对ToString()重写了,如果不重写结果还是输出数据类型
System.Console.WriteLine(o.ToString()); //ToString()重写对类外的不影响