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

时间:2015-09-12 20:17:34

标签: c# built-in

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

我目前有

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,] 我很困惑。为什么它会随机移动我的逗号?我做了一些非常愚蠢的事情并没有看到它吗?

2 个答案:

答案 0 :(得分:2)

您要反转元素的顺序,而不是字符的顺序。它的1,后跟0。当它被反转时0后跟1,。打印时,您会得到01,

您不应将分隔,包含在列表元素中,而只应在打印时添加它。

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

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

答案 1 :(得分:0)

试试这个:

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