C# DateTime型の引数に何も指定しなくても呼び出せるメソッドを作りたい

イラスト C#

初期値の指定

初期値の指定は簡単にできます。

public void AddMessage(string Title, string Message, DateTime? OshiraseDate = null,int Priority = 0 )
        {

このように初期値を設定する事で、関数を呼び出す時に引数を省略する事が可能です。

OshiraseDateはDateTime型ですが、Null許容型 ?をつけてあります。これは引数で渡ってきたときに何か値が設定されたかどうかを明確にするためにNullも扱えるようにしました。

なので、実際に値が入ってきたときと、入ってこなかった時、利用するには一手間かけます。

            //指定がなければ省略
            if (OshiraseDate != null)
            {
                DateTime dt = (DateTime)OshiraseDate;
                MessageBox.Show(dt.ToUniversalTime().ToString("yyyy-MM-dd HH-mm-ss"));
            }

Null許容型のDateTime? も、(DateTime)としてキャストしてやると、DateTimeの変数に入れる事ができます。後は普通のDateTimeとして利用可能です。

例では、UTC にて日付時刻をメッセージボックスに表示させます。

引数を省略し、その次の変数に渡したい

次に、OshiraseDateは省略しておいて、Priorityだけ設定したい場合の関数の呼び出し方です。

public void AddMessage(string Title, string Message, DateTime? OshiraseDate = null,int Priority = 0 )
        {

引数を指定して呼び出す

OshiraseDateは省略していて、その次のPriorityだけ引数を指定したい場合

AddMessage("TestTitle","TestMessage",Priority: 10);

と、このように関数で待っている変数Priorityを指定して値を引き渡す事ができます。

コメント

Copied title and URL