C# List.Reverse()在C中不起任何作用#

C# List.Reverse()在C中不起任何作用#,c#,list,reverse,C#,List,Reverse,给定以下代码: List<Digit> tempDigits = input.Digits; string test = tempDigits.ToString(); // -> {2,2,7} tempDigits.Reverse(); string test2 = tempDigits.ToString(); // -> {2,2,7} List tempdights=input.Digits; 字符串测试=tempDigits.ToString();//->{2,

给定以下代码:

List<Digit> tempDigits = input.Digits;
string test = tempDigits.ToString(); // -> {2,2,7}
tempDigits.Reverse();
string test2 = tempDigits.ToString(); // -> {2,2,7}
List tempdights=input.Digits;
字符串测试=tempDigits.ToString();//->{2,2,7}
tempDigits.Reverse();
字符串test2=tempDigits.ToString();//->{2,2,7}
这是我的代码:

结果是(在此期间,我根据泰森建议的命名约定重命名了变量)

出于某种原因,国有企业似乎没有做好本职工作


一定很简单。但我不明白问题是什么。我希望有人能帮忙。

您提供的信息不完整,无法解决这个问题

您提供的信息中的一个可重复的示例不会显示相同的症状

使用系统;
使用System.Collections.Generic;
公共课程
{
公共静态void Main()
{
列表位数=新列表{2,2,7};
foreach(整数位数)
控制台。写入(数字);
Console.WriteLine();
数字。反向();
foreach(整数位数)
控制台。写入(数字);
Console.WriteLine();
}
}
它给出了预期的输出

227
722


我的猜测是,
这个。数字
不是可变的引用。但这只是一个假设。

您发布的代码将在真空中正常工作。(除了,
List.ToString()
在什么世界中产生“
{2,2,7}
”?)

我的主要猜测是,正如Lesiak评论的那样,
this.Digits
input.Digits
指向完全相同的
List
实例。因此,
Digits1.Reverse()
会反转列表,而
Digits2.Reverse()
会反转列表,并将其恢复到初始状态。也许
这个
输入
是同一件事。或者,它们可能是两种不同的东西,恰好使用相同的基本
数字
列表。谁知道呢

还有许多其他的可能性,根据所提供的信息,其中一些可能是无法猜测的。例如:

  • 可能提供列表的
    input
    控件正在尝试主动管理列表,并在注意到列表已反转时立即对其重新排序
  • 可能您没有使用
    System.Collections.Generic.List
    类型,而是引用了其他名称空间,其中有人编写了一个
    List
    类型,它的行为与您想象的不一样。可能它甚至没有实现
    Reverse()
    ,因此编译器正在使用
    Enumerable.Reverse()
    扩展方法,该方法不改变底层数据

如果不了解更多关于您的环境的信息,就不可能确切知道。

应该从a)为新列表使用不同的名称和b)遵循C#命名约定开始,这意味着变量应该以小写字母开始。这两种方法都可以消除关于您正在检查和/或撤销哪个列表的任何模糊性。根据,撤销是无效的。您能为该问题提供一个解决方案吗?它一定很简单,但是在不知道上下文的情况下看几行代码有点像猜谜游戏。我想看看隐藏在调试器窗口后面的代码。我猜您可能会反转两次(什么是数字2)将代码添加为文本,并请同时添加
这个数字的来源(您也可以显示
数字的来源)。是
输入。数字
此。数字
可能链接到代码中的同一列表?
列表
是可变类型。我不认为是这样。
string.Join(“,”,digits)
会在这里为您节省一些for循环;)@在OP显示的情况下,两个列表可以是同一个对象。“我们需要更多的信息。”当然。你知道,又快又脏。至少你对它的作用毫无疑问。但你总是可以编辑它,并得到一些分数。