Open4

C#の匿名クラス

しみゆーしみゆー

List<List<string>>のような2次元配列を使いたいケースがあったが、
匿名クラスのList使った方がいいですよと言ってくれた方がいて、「???」となったので、その時のメモφ(..)

【Before】

var userPairs = new List<List<string>>() {};
...var pair = new List<string> { "mentor", "mentee" }; 
userPairs.Add(pair)

【After】

var userPairs = Enumerable.Range(0, 0)
        .Select(i =>
        new
        {
                MentorId = string.Empty,
		MenteeId = string.Empty,
	}
).ToList();

var pair = new { MentorId = "mentor", MenteeId = "mentee" };
userPairs.Add(pair);
しみゆーしみゆー

匿名クラスのプロパティは、オブジェクトが生成される時以外では変更できない(後から変更不可)

var pair = new { MentorId = "mentor", MenteeId = "mentee" };
pair.MenteeId = "変更できない";

しみゆーしみゆー

一緒に出てきたEnumerable.Range()も理解が曖昧だったので書いておく。

しみゆーしみゆー

startで、シーケンス内の最初の整数を指定する
countで、生成するシーケンスの数を指定する