首页 > 解决方案 > 在下面使用 -i 和 -1 的目的是什么:array[name.Length - i] = name[i - 1];

问题描述

数组[名称.长度 - i] = 名称[i - 1];

在上面的代码中,我知道它的目的是获取名称数组的每个字母并将其放入名为数组的数组中。我不确定的是关于 -i 和 -1 到底在做什么的逻辑解释。这只是我必须记住的语法吗?

到目前为止,我知道分配状态的左侧表示字母的去向(一次 1 个字母 a),而右侧表示字母的来源(一次 1 个字母)。但是,我仍然不清楚结构的原因。

该代码的目的是要求用户输入他们的姓名。使用数组反转名称,然后将结果存储在新字符串中。/// 在控制台上显示颠倒的名字。

    {
        Console.Write("What's your name? ");
        var name = Console.ReadLine();

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

        var reversed = new string(array);
        Console.WriteLine("Reversed name: " + reversed);
    }

标签: c#arrays

解决方案


只需计算并查看i每次循环迭代中的值是多少。让我们假设 name.Length 是 10。
那么,在第一次迭代中,i= 10,所以
array[name.Length - i] = name[i - 1];意味着
array[10 - 10] = name[10 - 1]; or: array[0] = name[9]
Next iteration: array[10 - 9] = name[9 - 1] or: array[1] = name[8]
Next iteration: array[10 - 8] = name[8 - 1] or: array[2] = name[7]
etc
看看这是如何工作的?

这只是我必须记住的语法吗?

不,你只需要看看发生了什么。


推荐阅读