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