[C#] 匿名型でのプロパティ名の省略

今回は、ごく軽く余り役に立たない話題。C# の匿名型に関して。

■ 匿名型

匿名型は、以下のようなものだ。

var 本1 = new { タイトル = "C#入門", 価格 = 3800 };

これで、"本1" は次のような無名のクラスの参照変数となる、と云うものだ。

// 疑似コード (コンパイルできない)
class <>f__AnonymousType1`2 // 内部的なクラス名
{
public string タイトル { get; set; }
public int    価格     { get; set; }
}

■ 匿名型のプロパティ名の省略

名前が付いている場合、匿名型のプロパティ名は省略できる。

例えば、変数を使用した場合、以下のように書ける:

var タイトル = "C#入門";
var 価格     = 3800;
var 本2      = new { タイトル, 価格 };

これで、"本2" は、先のクラスと同様の匿名クラスの参照変数となる。

まあ、これは大して役に立たないだろう。変数名とプロパティ名では、通常、命名規則が異なる (CamelCase と PascalCase が普通) からだ。

プロパティ名を使うこともできる:

var 出力用本 = new { 本1.タイトル, 価格 = 本1.価格.ToString("C") };

"出力用本" は、次の2つのプロパティを持つ匿名クラスの参照変数だ。

public string タイトル { get; set; }
public string 価格     { get; set; }

こちらは、「同じプロパティ名としたい (先のプロパティ名が変更になったら変更になるようにしたい)」と云う場合等に使えるかもしれない。

.NETC#

Posted by Fujiwo