プログラムを呼び出す時に起動引数を渡して実行します。
起動引数はスペース区切りで複数の引数を渡すことも可能です。
起動引数の間のスペースが1つではなく、スペースが2つ以上だったらどうなる?
ふと、疑問が浮かびました。
以下のような起動引数だったらどうなるのか、と。
one two three four
twoとthreeの間の長いスペースは一つの区切りとなるのか、そうではないのか、と。
実際にコードを動かして確認したこと
using System; namespace ConsoleApp3 { class Program { static void Main(string[] args) { Console.WriteLine("Start"); for (int i = 0; i < args.Length; i++) { Console.WriteLine($"{i+1}:{args[i]}"); } Console.WriteLine("End"); } } }
C#では長いスペースも一つの区切りと見なされ、one,two,three,fourという4つの起動引数となりました。
上記のコードもRiderでデバッグで動かすと、以下のようにスペース複数を一つの区切りとみなしてくれませんでした。
Visual Studioでも動作確認したところ、Macから起動引数をコピーして、Windowsで実行すると
スペース複数を一つの区切りとみなしてくれてませんね。
結局、きちんとexeに起動引数を渡して試すことにしました。
スペース複数を一つの区切りとみなして処理されました。
原則、スペース複数でも一つの区切りとなると思って良さそうですが、変なことはしないと良さそうですね。