コマンドライン引数の解析処理は実装者に任されます。 .NETのクラスライブラリでは、コマンドライン引数の解析を目的としたクラスやメソッド等は用意されていません。 そのため、独自に解析処理を記述するか、サードパーティーのライブラリ等を使用する必要があります。
こういったライブラリの一例として、Mono.Optionsがあります。 Mono.Optionsでは、UnixおよびWindowsでよく用いられる形式のコマンドライン引数の解析をサポートしていて、シンプルなコードで引数の解析を実装することができます。
Mono.Optionsを使ってコマンドライン引数を解析する
using System;
using Mono.Options;
class Sample {
static void Main(string[] args)
{
bool arg1 = false, arg2 = false, arg3 = false;
string foo = null;
// コマンドライン引数の定義
var p = new OptionSet() {
{"arg1", val => arg1 = (val != null)},
{"arg2", val => arg2 = (val != null)},
{"arg3", val => arg3 = (val != null)},
{"foo=", val => foo = val},
};
// 定義に従ってコマンドライン引数を解析する
p.Parse(args);
// 解析した結果を表示
if (arg1)
Console.WriteLine("arg1が設定されています");
if (arg2)
Console.WriteLine("arg2が設定されています");
if (arg3)
Console.WriteLine("arg3が設定されています");
Console.WriteLine("fooの値に'{0}'が指定されています", foo);
}
}
実行結果例
$mono test.exe /arg1 /arg3 /foo:bar arg1が設定されています arg3が設定されています fooの値に'bar'が指定されています $mono test.exe --arg2 --foo=hoge arg2が設定されています fooの値に'hoge'が指定されています