C#メモ exeのコマンドライン引数で”(ダブルクォーテーション)で囲まれたコマンドライン引数の値がうまく取れないのは¥(エンマーク)がエスケープシーケンスと認識されていることを確認してみる
ハマったのでメモ。
C#のコマンドラインは"(ダブルクォーテーション)でくくられた文字列は1つの引数として認識してくれるけど…なぜか認識してくれず引数がくっついてしまった。
原因が何なのか分からなかったんだけど、結局文字列の末尾に¥(エンマーク)があるとエスケープシーケンスとして認識されるってことだった。
その違いを試したコードはこんなん。
/// /// エントリーポイント /// ///コマンドライン引数 static void Main(string[] astrArguments) { // コマンドライン引数の内容をコンソールに出力する foreach (string strArgument in astrArguments) { Console.WriteLine(strArgument); } }
ダメだったときの引数はこんな感じ。
"C:\aaa\" "bbb"
実行するとこんな感じ。
1つ目の引数の末尾にある¥(エンマーク)がエスケープシーケンスとして認識されて"(ダブルクォーテーション)がなかったことになり…2つの引数のはずがくっついて1つの引数になっちゃってる…。
C:\aaa" bbb
よかったときの引数はこんな感じ。
"C:\aaa" "bbb"
んで、実行するとこんな感じ。
ちゃんと2つの引数として認識されてとる。
C:\aaa bbb
ちゅーことで引数は¥(エスケープシーケンス)を認識しちゃうってとこに気をつけにゃならん。
どう対処するかはまた今度。
とりあえず、忘れないうちにメモってことで。
[amazonjs asin="4822298477″ locale="JP" title="C#実践開発手法 (マイクロソフト公式解説書)"]
ディスカッション
コメント一覧
まだ、コメントがありません