結論
Tuple
型もしくは自作(カスタム)
クラスを使います。
解説
簡単に関数から2つ以上の戻り値を返したい場合はTuple
型を使用します。
使用方法は下記になります。
Tuple型で返す
/// <summary>
/// ユーザーの名前と年齢を返します。
/// </summary>
/// <returns>item1:ユーザー名, item2:年齢</returns>
private (string, int) GetUserData()
{
return ("山田", 25);
}
Tuple
型からデータを取得するには下記のように記載します。
Tuple型からデータを取得する例
private (string, int) GetUserData()
{
return ("山田", 25);
}
private void User()
{
var tupleData = GetUserDatas();
//名前を取得
var userName = tupleData.Item1;
//年齢を取得
var userAge = tupleData.Item2;
}
戻り値に名前をつけることも可能です。
(@ktz_aliasさん、コメントで教えて頂きありがとうございます!)
名前付きTuple型からデータを取得する方法
// フィールド名付きタプルでメソッド定義
private (string Name, int Age) GetUserData()
{
return ("山田", 25);
}
private void User()
{
var tupleData = GetUserDatas();
//名前を取得
var userName = tupleData.Name; // フィールド名でアクセス
//年齢を取得
var userAge = tupleData.Age; // フィールド名でアクセス
}
厳格に関数から2つ以上の戻り値を返したい場合は自作クラス
を使用します。
自作クラスを実装
public class User
{
public string Name { get; }
public int Age { get; }
public User(string name, int age)
{
Name = name;
Age = age;
}
}
使用方法は下記になります。
自作クラス(User)で返す
/// <summary>
/// ユーザーの名前と年齢を返します。
/// </summary>
/// <returns>Userクラス</returns>
private User GetUserData()
{
return new User("山田", 25);
}
自作クラス(User)からデータを取得するには下記のように記載します。
自作クラス(User)からデータを取得する例
private User GetUserData()
{
return new User("山田", 25);
}
private void User()
{
var userData = GetUserData();
//名前を取得
var userName = userData.Name;
//年齢を取得
var userAge = userData.Age;
}
以上です。
追記(2022/02/15)
Taple
と記載しておりましたがTuple
が正しい綴りでした。@apashoniさん、編集リクエストを頂きありがとうございました!