📢 Webサイト閉鎖と移転のお知らせ
このWebサイトは2026年9月に閉鎖いたします。
新しい記事は移転先で追加しております。(旧サイトでは記事を追加しておりません)
| 65行目: | 65行目: | ||
<code>ValueTuple</code>構造体は、null非許容の値型であるため、<code>null</code>で初期化できない。<br> | <code>ValueTuple</code>構造体は、null非許容の値型であるため、<code>null</code>で初期化できない。<br> | ||
<syntaxhighlight lang="c#"> | <syntaxhighlight lang="c#"> | ||
// | // ValueTuple構造体は、null非許容の値型であるため、nullを '(int, string)' に変換できません | ||
(int, string) vt = null; | (int, string) vt = null; | ||
| 74行目: | 74行目: | ||
==== メンバの種類 ==== | ==== メンバの種類 ==== | ||
<code>ValueTuple</code>構造体のメンバはフィールドであるため、以下の2つの特徴がある。<br> | <code>ValueTuple</code>構造体のメンバはフィールドであるため、以下の2つの特徴がある。<br> | ||
* out / | * <code>out</code> / <code>ref</code>キーワードの引数に渡すことができる。 | ||
* プロパティを前提としたFWでは使用できない。(例. バインディング等) | * プロパティを前提としたFWでは使用できない。(例. バインディング等) | ||
<syntaxhighlight lang="c#"> | <syntaxhighlight lang="c#"> | ||
| 81行目: | 81行目: | ||
var t = Tuple.Create(1, "a"); | var t = Tuple.Create(1, "a"); | ||
// Add(ref t.Item1); // プロパティまたはインデクサをout / refキーワードの引数に渡すことはできない | // Add(ref t.Item1); // コンパイルエラー | ||
// プロパティまたはインデクサをout / refキーワードの引数に渡すことはできない | |||
</syntaxhighlight> | </syntaxhighlight> | ||
<br> | <br> | ||
| 88行目: | 89行目: | ||
<code>ValueTuple</code>構造体のメンバはフィールドであるため、ミュータブルである。<br> | <code>ValueTuple</code>構造体のメンバはフィールドであるため、ミュータブルである。<br> | ||
<syntaxhighlight lang="c#"> | <syntaxhighlight lang="c#"> | ||
// 割り当て可能 | // ValueTuple構造体 割り当て可能 | ||
var vt = (1, "a"); | var vt = (1, "a"); | ||
vt.Item1 = 2; | vt.Item1 = 2; | ||
// | // Tupleクラス 割り当て不可 | ||
var t = Tuple.Create(1, "a"); | var t = Tuple.Create(1, "a"); | ||
// t.Item1 = 2; | // t.Item1 = 2; // コンパイルエラー | ||
// Tuple<int, string>.Item1(プロパティまたはインデクサ)は読み取り専用であるため、割り当てることはできない | |||
// | // 匿名型 割り当て不可 | ||
var a = new { Item1 = 1, Item2 = "a" }; | var a = new { Item1 = 1, Item2 = "a" }; | ||
// a.Item1 = 2; | // a.Item1 = 2; // コンパイルエラー | ||
// <anonymous type: int Item1, string Item2>.Item1(プロパティまたはインデクサ)は読み取り専用であるため、割り当てることはできない | |||
</syntaxhighlight> | </syntaxhighlight> | ||
<br> | <br> | ||