.net字符串。反向长度值

.net字符串。反向长度值,.net,.net,谁能告诉我为什么下面的方法返回的字符串长度总是60?这是控制台应用程序中的C方法 static string Reverse(string stringToReverse) { string s = stringToReverse.Reverse().ToString(); return s; } 作为招聘流程的一部分,我们要求面试应聘者编写一个方法来反转字符串。这是我们得到的一个答案。长度问题让我们感到疑惑。因为: stringToReverse.Reverse().ToSt

谁能告诉我为什么下面的方法返回的字符串长度总是60?这是控制台应用程序中的C方法

static string Reverse(string stringToReverse)
{
    string s = stringToReverse.Reverse().ToString();
    return s;
}
作为招聘流程的一部分,我们要求面试应聘者编写一个方法来反转字符串。这是我们得到的一个答案。长度问题让我们感到疑惑。

因为:

stringToReverse.Reverse().ToString()
是:

而不是字符串的反向内容。这是因为该字符串被反向方法视为IEnumerable,对该集合调用ToString将为您提供该集合的字符串表示形式,而不是其内容的字符串表示形式。

因为:

stringToReverse.Reverse().ToString()
是:


而不是字符串的反向内容。这是因为该字符串被反向方法视为IEnumerable,在该集合上调用ToString将为您提供集合的字符串表示形式,而不是其内容的字符串表示形式。

问题是该方法根本无法工作。它使用LINQ将stringToReverse视为IEnumerable,它是相反的。。。但是调用反向返回的IEnumerable上的ToString并不能满足这里的需要。不要看长度——看绳子本身!当然,一个单一的单元测试就可以证明这一点

显而易见的解决办法是:

return new string(stringToReverse.Reverse().ToArray());

。。。但由于Unicode组合字符、代理项对等,这实际上仍然不会做正确的事情。正确地反转字符串将非常复杂。。。当然,这不是我希望在面试中看到的正确做法,但意识到这比你想象的要难是一个好的开始。

问题是这种方法根本不起作用。它使用LINQ将stringToReverse视为IEnumerable,它是相反的。。。但是调用反向返回的IEnumerable上的ToString并不能满足这里的需要。不要看长度——看绳子本身!当然,一个单一的单元测试就可以证明这一点

显而易见的解决办法是:

return new string(stringToReverse.Reverse().ToArray());

。。。但由于Unicode组合字符、代理项对等,这实际上仍然不会做正确的事情。正确地反转字符串将非常复杂。。。当然,这不是我希望在面试中看到的正确做法,但意识到这比你想象的要难是一个好的开始。

你看过结果字符串了吗

System.Linq.Enumerable+d_ua0`1[System.Char]

您的候选者使用LinQ Reverse方法创建枚举,但未能意识到无法通过调用.ToString将枚举项传输到字符串

一种可能的方法是从char数组创建新字符串:

static string Reverse(string stringToReverse)
{
  return new string(stringToReverse.Reverse().ToArray());
}

你看过结果字符串了吗

System.Linq.Enumerable+d_ua0`1[System.Char]

您的候选者使用LinQ Reverse方法创建枚举,但未能意识到无法通过调用.ToString将枚举项传输到字符串

一种可能的方法是从char数组创建新字符串:

static string Reverse(string stringToReverse)
{
  return new string(stringToReverse.Reverse().ToArray());
}

那么,如何将反向迭代器转换为反向字符串呢?请参见@Jon Skeet的答案。那么,如何将反向迭代器转换为反向字符串呢?请参见@Jon Skeet的答案。很好的回答了所有人。真的很简单。谢谢。每个人的回答都很好。真的很简单。谢谢