📢 Webサイト閉鎖と移転のお知らせ
このWebサイトは2026年9月に閉鎖いたします。
新しい記事は移転先で追加しております。(旧サイトでは記事を追加しておりません)
細 Wiki がページ「C Sharpの基礎 - ValueTuple」を「C Sharpの基礎 - タプル」に、リダイレクトを残さずに移動しました |
|||
| 1行目: | 1行目: | ||
== 概要 == | == 概要 == | ||
専用のクラスや構造体を定義するほどのことでもないが、複数のオブジェクトを一時的に1つに纏めたい時がある。<br> | 専用のクラスや構造体を定義するほどのことでもないが、複数のオブジェクトを一時的に1つに纏めたい時がある。<br> | ||
<br> | |||
例えば、今までは、メソッドは1つのオブジェクトしか返せなかったので、複数の結果を返す場合は、複数の結果を格納するためだけに型を定義したり、<br> | 例えば、今までは、メソッドは1つのオブジェクトしか返せなかったので、複数の結果を返す場合は、複数の結果を格納するためだけに型を定義したり、<br> | ||
あるいは、out引数を使用していた。<br> | あるいは、out引数を使用していた。<br> | ||
<br> | <br> | ||
.NET Framework 4.7で導入されたValueTuple構造体(System名前空間)とVisual Studio 2017(C#7)で導入されたタプル構文を使えば、<br> | .NET Framework 4.7で導入されたValueTuple構造体(System名前空間)とVisual Studio 2017(C# 7)で導入されたタプル構文を使えば、<br> | ||
簡単に複数の結果を一時的に1つに纏められる。<br> | 簡単に複数の結果を一時的に1つに纏められる。<br> | ||
ここでは、それらの新しい機能のうち、メソッドから複数の結果を返す方法について解説する。<br> | ここでは、それらの新しい機能のうち、メソッドから複数の結果を返す方法について解説する。<br> | ||
<br><br> | |||
== TupleクラスとValueTuple構造体の比較 == | |||
<center> | |||
{| class="wikitable" style="background-color:#fefefe;" | |||
|- | |||
! style="background-color:#00ffff;" | | |||
! style="background-color:#00ffff;" | Tupleクラス | |||
! style="background-color:#00ffff;" | ValueTuple構造体 | |||
! style="background-color:#00ffff;" | 匿名型 | |||
|- | |||
| 名前付け || × || ○ || ○ | |||
|- | |||
| 引数・戻り値 || ○ || ○ || × | |||
|- | |||
| 型の種類 || クラス || 構造体 || クラス | |||
|- | |||
| メンバの種類 || プロパティ || フィールド || プロパティ | |||
|- | |||
| 不変性 || イミュータブル || ミュータブル || イミュータブル | |||
|} | |||
</center> | |||
<br><br> | <br><br> | ||