.NET Framework

反変性と共変性

ここ数日、こいつで引っかかったけど、ようやく理解できたので備忘録。 コトの発端 こんなコードを書いていた。 interface ISample<in T> { void InvokeAction(Action<T> action); } そしたら、コンパイラに怒られた。 無効な分散: 型パラメーター 'T' は、'ConsoleAp</t></in>…

Expression.Addに関することなど

直感的でないことがいくつかあったので、備忘録的に。 お約束 Expression.Add(Expression left,Expression right)を構築すると、NodeTypeがAddになる。 Expressionに二項演算子+を実装したλを食わせても結果は一致する。 普通はこのBinaryExpression.Methodの実装…

GCHandleの振る舞いに関するコトなど

Summary GCHandleの挙動が非直感的な部分があるので、後日はまらないためのメモ。 Pinned指定できるもの、そして出来ないもの Pinned指定できるものはある程度限られている。 以下の型以外はPinnedは出来ない。 但し、ランタイムでこけてくれるので、この辺ではまり…