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);
}
我真的很困惑为什么反向功能不能正常工作..
我目前有
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);
}