【发布时间】:2011-01-19 10:57:57
【问题描述】:
我过去曾适度使用过ToString(),我发现它在许多情况下都非常有用。但是,我对这种方法的使用很难证明将这种方法放在System.Object 中。我的疯狂猜测是,在为提出 .NET 框架的初始设计而进行的工作和举行的会议期间的某个时候,决定有必要——或者至少非常有用——包括一个 ToString()将由 .NET 框架中的所有内容实现的方法。
有谁知道具体原因是什么?我是否错过了很多ToString() 被证明足以成为System.Object 的一部分的情况? ToString()的最初原因是什么?
非常感谢!
PS - 再说一遍:我不是质疑该方法或暗示它没有用,我只是想知道是什么让它如此有用,以至于放在System.Object 中。
旁注 - 想象一下:
AnyDotNetNativeClass someInitialObject = new AnyDotNetNativeClass([some constructor parameters]);
AnyDotNetNativeClass initialObjectFullCopy = AnyDotNetNativeClass.FromString(someInitialObject.ToString());
这不是很酷吗?
编辑(1):
(A) - 根据一些答案,.NET 语言似乎从 Java 继承了这一点。因此,我将“Java”添加到主题和标签中。如果有人知道这在 Java 中实现的原因,请说明一下!
(B) - 静态假设 FromString 与序列化:当然,但那是完全不同的故事,对吧?
【问题讨论】:
-
FromString = 序列化反序列化?
-
当然,但不是那么直接,对吧?
-
好问题,当然
System.Object.ToString()值得商榷:csharptest.net/?p=346 -
不作为答案,因为这是猜测:他们必须选择放置它的地方,并且仅为 toString 添加一个接口(在 Java 中,因为它来自那里)感觉有点矫枉过正。例如: Console.WriteLine(string format, params IStringConvertable[] args);在 hello world 应用程序中令人困惑 :)