LoginSignup
2
2

More than 3 years have passed since last update.

int.TryParseなどで、使わない out 引数のためにわざわざ変数を用意したくない!

Last updated at Posted at 2020-01-20

はじめに

C#7.0 (Visual Studio 2017) 以降、_(アンダースコア)で、結果を破棄するout引数を指定できます。

サンプル(コンソールアプリ)

Program.cs
using System;

namespace ConsoleApp1
{
    class Program
    {
        static void Main(string[] args)
        {
            Console.Write("整数をどうぞ:");
            var inputText1 = Console.ReadLine();
            if (!Int32.TryParse(inputText1, out _))
            {
                Console.WriteLine("整数を指定してね!");
                return;
            }

            Console.Write("日時をどうぞ:");
            dynamic inputText2 = Console.ReadLine();
            if (!DateTime.TryParse(inputText2, out DateTime _)) // CS8183:「暗黙的に型指定された破棄の型を推論できません」対策として型を指定(ここでは、out の次の DateTime)
            {
                Console.WriteLine("日時を指定してね!");
                return;
            }

            Console.WriteLine("ありがとう!");
        }
    }
}

姉妹品

out引数で用いる変数をインラインで宣言する(値も使える)コーディングとして次のようなものもあります。

sample.cs
var inputText1 = Console.ReadLine();
dynamic inputText2 = Console.ReadLine();
var valid1 = int.TryParse(inputText1 , out var intVal);
var valid2 = DateTime.TryParse(inputText2, out DateTime dtVal);
if(valid1 && valid2) {
  Console.Write("どうもありがとう {0} と {1} を入力してくれて!", intVal, dtVal);
}

参考にした資料

2
2
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
2
2