如何使用Reverse方法反转数组。 C#

时间:2017-02-20 21:13:16

标签: c# arrays reverse

由于某些原因,当我应用反向方法时,没有任何变化。

public static string ReverseString(string word)
    {
        char[] myArray = word.ToCharArray();
        myArray.Reverse();

        string ans = string.Join("", myArray);

        return ans;
    }

7 个答案:

答案 0 :(得分:6)

也许您对使用静态 Array.Reverse的方法感到困惑,这确实是一种void方法?

Array.Reverse Method (Array)

您正在使用的是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.ReverseArray.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)