📢 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#">
  // null非許容の値型であるため、nullを '(int, string)' に変換できません
  // 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 / refキーワードの引数に渡すことができる。
* <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<int, string>.Item1(プロパティまたはインデクサ)は読み取り専用であるため、割り当てることはできない
  // Tupleクラス  割り当て不可
  var t = Tuple.Create(1, "a");
  var t = Tuple.Create(1, "a");
  // t.Item1 = 2;
  // t.Item1 = 2; // コンパイルエラー
                  // Tuple<int, string>.Item1(プロパティまたはインデクサ)は読み取り専用であるため、割り当てることはできない
   
   
  // <anonymous type: int Item1, string Item2>.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>