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

C# 为什么我可以在同一个对象上多次调用ToString()?,c#,tostring,C#,Tostring,有人能告诉我为什么我可以像那样多次调用ToString()吗?只是好奇,谢谢 因为string本身有一个ToString()方法(所有对象都有) 您首先调用ToString(),然后调用该调用的结果,然后调用该调用的结果等。基本上,每个后续调用都会对前一个调用的结果起作用 当然,它不限于ToString()。例如: namespace ConsoleApplication1 { class Program { static void Main(string[] a

有人能告诉我为什么我可以像那样多次调用ToString()吗?只是好奇,谢谢

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

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

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

namespace ConsoleApplication1
{
    class Program
    {
        static void Main(string[] args)
        {
            string word = "Shazam!";
            Console.WriteLine(word.ToString().ToString().ToString().ToString());
            Console.ReadKey();
        }
    }
}
在新对象上调用
ToString()
,然后在返回的字符串上调用
Substring
,然后在该子字符串上调用
Length

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

好吧,
ToString()
方法返回一个
System.String
,而
System.String
也有一个
ToString()
方法,因此您正在对从上一个
ToString()返回的对象调用
ToString()

ToString()只返回字符串表示形式作为字符串对象。

因此,word.ToString()返回一个表示word的String对象。String对象有一个ToString()函数,该函数返回一个表示String对象的String对象。。。等等

  • 一切都是客观的
  • 是一个对象类方法 在对象上应用toSting时,它返回一个对象类型字符串。但它又是一个对象,您可以对其应用toString方法。 所以你的循环是无限的。 因为每一个新事物都是一个对象

    方法返回表示对象的字符串


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

    调用
    ToString()
    时,这里出现了一个函数链,因为
    ToString()
    返回了一个字符串对象。

    你刚刚得到了4个答案,都是这么说的:)希望是其中一个helps@Joe:哈哈哈,是的。他们都很有帮助。谢谢。有趣的事实:。可能是一个实现细节,但仍然很有趣;因为字符串是不可变的(不能更改),所以没有必要复制它。是的,这是一个相当明显的优化。
    int x = new object().ToString().Substring(0, 2).Length;