由于某些原因,当我应用反向方法时,没有任何变化。
public static string ReverseString(string word)
{
char[] myArray = word.ToCharArray();
myArray.Reverse();
string ans = string.Join("", myArray);
return ans;
}
答案 0 :(得分:6)
也许您对使用静态 Array.Reverse
的方法感到困惑,这确实是一种void
方法?
您正在使用的是IEnumerable
的LINQ扩展方法,您可以在此处找到它的参考:
Enumerable.Reverse Method (IEnumerable)
对于您的具体情况,我会使用此oneliner:
return new string(word.Reverse().ToArray());
答案 1 :(得分:4)
问题是myArray.Reverse()不会修改myArray。此方法以myArray的反向返回IEnumerable的char。
试试这个:
var reversed = myArray.Reverse();
然后使用逆转。
答案 2 :(得分:1)
您需要将返回值存储在变量中:
var reversed = myArray.Reverse();
这是您正在使用的Reverse()
方法的签名,顺便说一下,这是Enumerable
类中的扩展方法:
public static IEnumerable<TSource> Reverse<TSource>(this IEnumerable<TSource> source);
请参阅返回类型IEnumerable
,因此您需要存储该类型,然后使用它。
你可以这样做:
public static string ReverseString(string word)
{
return string.IsNullOrWhiteSpace(word) ? string.Empty
: string.Concat(word.Reverse());
}
答案 3 :(得分:0)
方法Reverse
是一种基于原始项返回新数组(或集合)的方法。
public static string ReverseString(string word)
{
char[] myArray = word.ToCharArray();
myArray = myArray.Reverse().ToArray(); //<-- Call ToArray() method to convert back to the array and execute the deffered action.
string ans = string.Join("", myArray);
return ans;
}
此方法通过使用延迟执行来实现。眼前的 返回值是存储所有信息的对象 需要执行操作。此方法表示的查询 在通过调用对象枚举对象之前不会执行 直接使用GetEnumerator方法或在Visual C#或For中使用foreach 每个都在Visual Basic中。
与OrderBy不同,此排序方法不考虑实际 在确定顺序时重视自己。相反,它只是返回 这些元素的顺序与它们产生的顺序相反 潜在的来源。
答案 4 :(得分:0)
尝试使用Array.Reverse(myArray)
代替myArray.Reverse()
。
您会混淆Enumerable.Reverse和Array.Reverse方法。
IEnumerable<char>.Reverse
:返回一个新的反转数组而不更改旧数组
myArray = myArray.Reverse();
Array.Reverse
:一个将反转输入数组的Void方法
Array.Reverse(myArray);
答案 5 :(得分:0)
public static string ReverseString(string word)
{
return string.Join("", word.Reverse());
}
答案 6 :(得分:0)
你应该Array.Reverse(myArray)