我试图弄清楚如何逐步执行这段代码,以更好地理解它。您在控制台中输入一个单词,它会将单词反向弹出。

我可以遵循代码,直到进入array[name.Length - i] = name[i - 1];

var array = new char[name.Length];
for (var i = name.Length; i > 0; i--)
    array[name.Length - i] = name[i - 1];     <------


我不知道如何翻译这一行代码的步骤。为什么我们从name.Length中减去1,然后再用i表示它本身减去?从i中的name[i - 1]减去1有什么作用?

最佳答案

循环从i等于name的长度开始,并在每次迭代中从i减去1。

因此,在第一次迭代中,name.Length - i等于0,而i-1等于name.Length -1
在下一次迭代中,name.Length - i等于1,而i-1等于name.Length -2,依此类推。

通过将name[x]处的char分配给array[y],循环将每个字符从name数组复制到array数组-因此,当循环结束时,array数组正好是的反向副本。 name数组。

我整理了一个small demo on rextester,因此您可以看到它正在运行。

请注意,这不是反转字符串的最佳方法,尤其是在使用非英语语言时。
某些语言使用的字母由多个字符组成,例如,法语的重音使用Ç, é, â, ê, î, ô, û, à, è, ù, ë, ï and ü.

对于这些languanges,仅逐个字符反转char会导致字符串中的重音位于错误的字母上。要获得正确的反向字符串,请检查R. Martinho Fernandes的answerthis SO post

关于c# - 如何理解C#反向命名练习?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/50111530/

10-12 22:50
查看更多