【C#超入門】コマンドライン引数(起動引数)でモードを切り替えてみる

C# コマンドライン引数

今回は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

コマンドライン引数である/MBeginnerという引数が読み込まれました。

コマンドライン引数でモードを切り替えてみる

実際にコマンドライン引数を使ってモードを切り替えるようなサンプルコードを作ってみます。

サンプルコード

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というパラメータを認識することができました。

よかったらシェアしてね!
  • URLをコピーしました!
  • URLをコピーしました!

この記事を書いた人

都内の精密機器を作っている会社に勤務している14年目のエンジニアです。趣味は美味しいものを食べることとゴルフ。プログラムについて今まで学んだことをわかりやすく発信するサイトを目指しています。

コメント

コメントする

目次
閉じる