C# Main メソッドにはどのくらい正確に入力されますか?string[] args
たとえば、空白は取り除かれますか? 空の文字列または null の要素はありますか? 一重引用符と二重引用符はどのように処理されますか?
MSDNはその方法を説明しておらず、単に言っているだけです
Main メソッドのパラメーターは、コマンド ライン引数を表す String 配列です。
C# Main メソッドにはどのくらい正確に入力されますか?string[] args
たとえば、空白は取り除かれますか? 空の文字列または null の要素はありますか? 一重引用符と二重引用符はどのように処理されますか?
MSDNはその方法を説明しておらず、単に言っているだけです
Main メソッドのパラメーターは、コマンド ライン引数を表す String 配列です。
プロセスを開始するとき、引数として文字列を渡すことができます。それらをどのように配置して分割するかは、完全にあなた次第です。
したがって、Windows コマンド ラインを使用している場合は、次のように実行します。
myexe.exe "Hello World" Joe Bloggs
配列には次が含まれます。
{"Hello World", "Joe", "Bloggs"}
ただし、.Net フレームワークが自動的に解析するため、特定の方法で分割されているだけです (Hello World を囲む引用符が削除されていることに注意してください)。
Main に与えられた引数は、リストの最初のものを削除した後にEnvironment.GetCommandLineArgs()によって返されたものだと思います。MSDN は、バックスラッシュに関する驚くほど複雑なロジックについて説明しています。
コマンド ライン引数はスペースで区切られます。二重引用符 (") を使用して、引数内にスペースを含めることができます。ただし、単一引用符 (') では、この機能は提供されません。
二重引用符の後に 2 つまたは偶数のバックスラッシュが続く場合、先行する各バックスラッシュ ペアは 1 つのバックスラッシュに置き換えられ、二重引用符は削除されます。二重引用符の後に 1 つだけを含む奇数のバックスラッシュが続く場合、先行する各ペアは 1 つのバックスラッシュに置き換えられ、残りのバックスラッシュは削除されます。ただし、この場合、二重引用符は削除されません。
コメントの Christian.K に感謝します。
プログラムに渡されるパラメーターは、オペレーティング システムによって異なります。
ヌル、空の文字列の引数をテストし、空白を削除し、プログラム内で一重/二重引用符を処理する必要があります (必要に応じて)。