Record型についてのメモ書き(弐)
なんのこと?とサンプルを見て実装してみる。コンポーネント プロパティに分解できます。
var human1 = new Human("Taro", "Tawamure", 15);え。これでビルドエラーにならないの?という見た目である。上記の場合は、FirstName, LastName, Ageというローカル変数に、human1のプロパティ値がそれぞれ設定されるようだ。まあ、確かに分解だけども…。なお、ローカル変数以外にも設定できるけど、その際varは不要になる。
var (FirstName, LastName, Age) = human1;
Person person1 = new("Tawamure", "Days") { Age = 25 };C#9.0の仕様を理解していないと、サッパリ妖精が来そうだ。なお、位置指定レコード以外で、この書き方をしようと思うと、Deconstructメソッドを時まで実装する必要がある。VS2019でコンパイルエラーが出て、修正ヒントにお任せすると、そのメソッドが現れる。
(person1.FirstName, person1.LastName, person1.Age) = human1;
internal void Deconstruct(out object firstName, out object lastName, out uint age) {位置指定レコードは、これをコンパイラが自動で実装してくれているから、エラーにならないのか。続きを読む
firstName = this.FirstName;
lastName = this.LastName;
age = this.Age;
}
スポンサーサイト
当サイトは基本をすっ飛ばしてます。基本文法等は、@ITをどうぞ