はじめに
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);
}