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显示的情况下,两个列表可以是同一个对象。“我们需要更多的信息。”当然。你知道,又快又脏。至少你对它的作用毫无疑问。但你总是可以编辑它,并得到一些分数。