今回はC#のコマンドライン引数を学んでいきます。
コマンドライン引数は、意外と頻繁に使う機会が多いので必ず覚えておきたい機能になります。
目次
スポンサーリンク
コマンドライン引数って何?
コマンドライン引数は、別名「起動引数」とも言われていますが、起動時にMain
関数に渡される引数のことを言います。
例えば、あるプログラムに対してモードを切り替えるような処理を入れたい場合であったり、予めパラメータをセットしたい場合などにコマンドライン引数が使われます。
コマンドライン引数を使ってみる
C#ではMain(string[] args)
の中のargs
がコマンドライン引数にあたります。
配列として取り込まれるので複数のパラメータを同時にセットすることが可能。
サンプルコード
using System;
namespace CommandLineTest
{
class Program
{
static void Main(string[] args)
{
foreach(var param in args)
{
Console.WriteLine("コマンドライン引数のパラメータは{0}", param);
}
Console.ReadLine();
}
}
}
実行結果
予めアプリケーション引数に/M Beginner
という引数を設定した状態で実行します。
コマンドライン引数のパラメータは/M
コマンドライン引数のパラメータはBeginner
コマンドライン引数である/M
とBeginner
という引数が読み込まれました。
コマンドライン引数でモードを切り替えてみる
実際にコマンドライン引数を使ってモードを切り替えるようなサンプルコードを作ってみます。
サンプルコード
using System;
namespace CommandLineTest
{
class Program
{
static void Main(string[] args)
{
foreach(var param in args)
{
var arr = param.Split(':');
var a1 = arr[0];
int a2;
int.TryParse(arr[1], out a2);
switch(a1)
{
case Params.MODE:
if (a2 == (int)MODE.BEGINNER)
{
Console.WriteLine("モードは{0}です。", MODE.BEGINNER.ToString());
}
else if (a2 == (int)MODE.ADVANCED)
{
Console.WriteLine("モードは{0}です。", MODE.ADVANCED.ToString());
}
break;
}
}
Console.ReadLine();
}
}
/// <summary>
/// モードの種類を列挙体で持つ
/// </summary>
enum MODE
{
BEGINNER,
ADVANCED
}
/// <summary>
/// 起動引数のパラメータ
/// </summary>
class Params
{
public const string MODE = "/M";
private int param = 0;
public int Param
{
get { return param; }
set { param = value; }
}
}
}
実行結果
今度は予めアプリケーション引数に/M:0
という引数を設定した状態で実行します。
列挙体としてenum
で指定したMODE
をコロンで区切って引数に割り当てます。
モードはBEGINNERです。
/M:0
で指定したBEGINNER
というパラメータを認識することができました。
コメント