C# Reverse() 函数无法正常工作

C# Reverse() function not working properly

我真的很困惑为什么反向功能不能正常工作..

我目前有

List<string> decimalVector = new List<string>();
string tempString = "10"
//For Vector Representation

for (int i = 0; i < tempString.Length; i++)
{
    //As long as we aren't at the last digit...
    if (i != (tempString.Length-1))
    {
        decimalVector.Add(tempString[i].ToString() + ",");
    }
    else
    {
        decimalVector.Add(tempString[i].ToString());
    }
}

Console.Write("Decimal: " + decimalOutput);
Console.Write(" Vector Representation: [");
decimalVector.Reverse();
for (int i = 0; i < decimalVector.Count; i++) 
{
   Console.Write(decimalVector[i]); 
}
Console.Write("]");

出于某种原因,而不是代码输出 [0,1],因为它与当前 decimalVector 中的内容相反([1,0]) ..它打印出 [01,] 我很困惑。为什么它会随机将我的逗号移出位置?我是不是做了什么傻事却没看到?

你颠倒了元素的顺序,而不是字符的顺序。它是 1,,然后是 0。反转时是 0 后跟 1,。当你打印它时,你会得到 01,.

您不应将分隔符 , 作为列表元素的一部分,而应仅在打印时添加。

顺便说一下,string.Join 方法可以优雅地解决您的问题:

string.join(",", tempString.Select(c => c.ToString()).Reverse())

试试这个:

        foreach (string s in decimalVector.Reverse()) 
        {
           Console.Write(s); 
        }