这是一个家庭作业问题,这就是为什么它可能有点奇怪(如果标题不是很好,也请道歉)
假设v1是重新定义ToString的X类型的值类型,那么使用Console.WriteLine(v1)和Console.WriteLine(v1.toString())有什么区别吗?
这是一个家庭作业问题,这就是为什么它可能有点奇怪(如果标题不是很好,也请道歉)
假设v1是重新定义ToString的X类型的值类型,那么使用Console.WriteLine(v1)和Console.WriteLine(v1.toString())有什么区别吗?
最简单的答案是“是的,有区别”。显然,重要的是你知道那个区别是什么。我不会告诉你,但我会告诉你如何调查它......
Console.WriteLine(v1)
Console.WriteLine(v1.ToString())
Main
ildasm
(或 IL 模式下的 Reflector)并查看方法调用之间的区别
您可能想要考虑的问题以及可能会给您带来额外奖励的问题:
Console.WriteLine
可以设计的方法来消除你注意到的任何低效率吗?关于装箱有一个小的区别,但对于它的正常实现,ToString
它不会改变程序的可观察行为(除了最小的性能影响)。你应该弄清楚拳击何时发生。
难道传球v1
给Console.WriteLine
框了吗?
有电话亭v1.ToString()
吗v1
?为什么/为什么不?类型覆盖是否重要ToString
?即调用继承自的Object
方法和重写的方法之间有区别吗?
不确定是否可以回答家庭作业问题,因为这感觉就像我在给你服务:)
在没有 ToString() 方法的情况下调用 Console.Writeline(v1) 将导致控制台也调用ToString()
以获取实际值。
另外,我不确定你的教授是否是一个“技巧问题”类型的人,但在 C# 中,没有“toString()”方法 - 它实际上是“ToString()”(注意大写“To”的用户)