郁闷!关于ToString()的override重写问题

lihaipeng1224 2009-12-22 05:56:04

namespace ConsoleApplication5
{
class Class1
{
public readonly int intVal1;
public readonly int intVal2;
public Class1(int Val1, int Val2)
{
intVal1 = Val1;
intVal2 = Val2;
}
//public string myToString()
//{
// return "myToString";
//}
public override string ToString()
{
return "ToString !";
}
}
class Program
{
static void Main(string[] args)
{
Class1 myClass = new Class1(2, 3);
Console.WriteLine(myClass);
Console.ReadKey();
}
}
}
输出:ToString !
为什么不调用myClass.ToString()方法也能输出ToString ! 呢?
但是把ToString()方法注释掉,改成如下代码时:
namespace ConsoleApplication5
{
class Class1
{
public readonly int intVal1;
public readonly int intVal2;
public Class1(int Val1, int Val2)
{
intVal1 = Val1;
intVal2 = Val2;
}
public string myToString()
{
return "myToString";
}
//public override string ToString()
//{
// return "ToString !";
//}
}
class Program
{
static void Main(string[] args)
{
Class1 myClass = new Class1(2, 3);
Console.WriteLine(myClass);
Console.ReadKey();
}
}
}
输出的是:ConsoleApplication5.Class1
为什么会出现这种情况呢?求高手解惑啊
...全文
266 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
tianliang1 2009-12-22
  • 打赏
  • 举报
回复
[Quote=引用 3 楼 love_netforever 的回复:]
1,Console.WriteLine(myClass),已经调用.ToString()方法。
2,下面的类中,根本没有重写ToString()方法,所以就输出myClass这个对象的全名称。
  string myToString()只被当作该类下的一个成员函数罢了



[/Quote]
其实楼上说的都对。。。
_autotest 2009-12-22
  • 打赏
  • 举报
回复
1,Console.WriteLine(myClass),已经调用.ToString()方法。
2,下面的类中,根本没有重写ToString()方法,所以就输出myClass这个对象的全名称。
string myToString()只被当作该类下的一个成员函数罢了


lindenrty 2009-12-22
  • 打赏
  • 举报
回复
ToString()是所有类锝基类Object的方法
Object.ToString()没有复写情况下会返回完整类名
.Net机制中 默认调用ToString 的地方是很多的
我姓区不姓区 2009-12-22
  • 打赏
  • 举报
回复
因为Console.WriteLine默认就是调用对象的ToString()方法

110,533

社区成员

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

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

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