为什么我可以在同一个对象上多次调用ToString()?

时间:2011-02-13 12:43:06

标签: c# tostring

namespace ConsoleApplication1
{
    class Program
    {
        static void Main(string[] args)
        {
            string word = "Shazam!";
            Console.WriteLine(word.ToString().ToString().ToString().ToString());
            Console.ReadKey();
        }
    }
}

有谁能告诉我为什么我可以多次调用ToString()?好奇,谢谢!

7 个答案:

答案 0 :(得分:6)

因为string本身有ToString()方法(所有对象都有)。

您首先在ToString()上调用word,然后调用该调用的结果,然后调用 调用的结果等。基本上每个后续调用都会作用于前一个的结果。

当然,并不仅限于ToString()。例如:

int x = new object().ToString().Substring(0, 2).Length;

在新对象上调用ToString(),然后在返回的字符串上调用Substring,然后在该子字符串上调用Length

答案 1 :(得分:1)

.ToString()返回一个字符串对象。它还实现了.ToString(),基本上返回this

答案 2 :(得分:1)

  1. 一切都是对象。
  2. http://msdn.microsoft.com/en-us/library/system.object.tostring.aspx是一个对象类方法。
  3. 当您在对象上应用toSting时,它返回一个对象类型字符串。但它又是一个对象,您可以在其上应用toString方法。 所以你的周期变得无限。 因为每件新事物都会成为一个对象。

答案 3 :(得分:0)

好吧,ToString()方法返回System.StringSystem.String也有ToString()方法,所以你在从{4}}返回的对象上调用ToString()上一个ToString()

答案 4 :(得分:0)

ToString()只返回一个字符串表示形式作为String对象。 http://msdn.microsoft.com/en-us/library/system.object.tostring.aspx

因此word.ToString()返回表示单词的String对象。 String对象有一个ToString()函数,它返回一个表示String对象的String对象......依此类推。

答案 5 :(得分:0)

ToString()方法返回表示对象的字符串。

如果调用字符串的ToString()方法,则返回一个字符串 - 内容与自身相同。如果你多次这样做,你会得到一个基本上引用同一个字符串的其他字符串对象。

答案 6 :(得分:0)

在调用ToString()时正在发生函数链,因为ToString()返回一个字符串对象