string line = "01234567"; string line2 = line[0..4]; Console.WriteLine(line); // 01234567 Console.WriteLine(line2); // 0123 この記事がとても分かりやすいです。 array[start..end] の時、startは「包括的(inclusive)」、endは「排他的(exclusive)」となります。 つまり、startは結果に含まれますが、endは結果に含まれません。 "01234567"という文字列に対して[2..4]は"23"です。 どうしてそうなっているのでしょうか? 分かりにくいと思う人もいるかもしれませんが、CやC++と同様、C#の「配列のインデックス」というのは「N番目の要素」を表しているというよりは「配列として確保されたメモリ上のデータの先頭からの距離」
![C#8.0で導入された配列インデクサの範囲指定がexclusive endな理由 - Qiita](https://cdn-ak-scissors.b.st-hatena.com/image/square/2b1b64b116029823b7b384a79f39f8625000ab43/height=288;version=1;width=512/https%3A%2F%2Fqiita-user-contents.imgix.net%2Fhttps%253A%252F%252Fcdn.qiita.com%252Fassets%252Fpublic%252Farticle-ogp-background-9f5428127621718a910c8b63951390ad.png%3Fixlib%3Drb-4.0.0%26w%3D1200%26mark64%3DaHR0cHM6Ly9xaWl0YS11c2VyLWNvbnRlbnRzLmltZ2l4Lm5ldC9-dGV4dD9peGxpYj1yYi00LjAuMCZ3PTkxNiZoPTMzNiZ0eHQ9QyUyMzguMCVFMyU4MSVBNyVFNSVCMCU4RSVFNSU4NSVBNSVFMyU4MSU5NSVFMyU4MiU4QyVFMyU4MSU5RiVFOSU4NSU4RCVFNSU4OCU5NyVFMyU4MiVBNCVFMyU4MyVCMyVFMyU4MyU4NyVFMyU4MiVBRiVFMyU4MiVCNSVFMyU4MSVBRSVFNyVBRiU4NCVFNSU5QiVCMiVFNiU4QyU4NyVFNSVBRSU5QSVFMyU4MSU4Q2V4Y2x1c2l2ZSUyMGVuZCVFMyU4MSVBQSVFNyU5MCU4NiVFNyU5NCVCMSZ0eHQtY29sb3I9JTIzMjEyMTIxJnR4dC1mb250PUhpcmFnaW5vJTIwU2FucyUyMFc2JnR4dC1zaXplPTU2JnR4dC1jbGlwPWVsbGlwc2lzJnR4dC1hbGlnbj1sZWZ0JTJDdG9wJnM9ZTZiMGE3MTU5MDI2MjkyYTU5ZmMyYmZhY2M3ZmNiMDk%26mark-x%3D142%26mark-y%3D112%26blend64%3DaHR0cHM6Ly9xaWl0YS11c2VyLWNvbnRlbnRzLmltZ2l4Lm5ldC9-dGV4dD9peGxpYj1yYi00LjAuMCZ3PTcxNiZ0eHQ9JTQwanVuMXMmdHh0LWNvbG9yPSUyMzIxMjEyMSZ0eHQtZm9udD1IaXJhZ2lubyUyMFNhbnMlMjBXNiZ0eHQtc2l6ZT0zMiZ0eHQtYWxpZ249bGVmdCUyQ3RvcCZzPTJjOGVmYzE0ZjBjNmE5NDk1YWJiYTYwMTg0ODVkZjI3%26blend-x%3D142%26blend-y%3D491%26blend-mode%3Dnormal%26s%3Dca9f02fbce385715f3afc7c63a501dd6)