C# 4.0 の挙動に関するメモ書き

メモ書き。
いずれ http://ufcpp.net/study/csharp に清書する。

  • dynamic に対する operator はまだ未実装
    • 「4.0 には入らない」じゃなくて「現 CTP では未実装」だと思う
    • IDynamicObject に演算子呼び出しに関する仕組みが入ってるんで
  • typeof(dynamic) はエラー
  • dynamic の実態は object だけど、GetType とか ToString とかも CallSite 呼び出しになる
  • [DynamicAttribute(new bool[] { true })] な理由は generics
static void Test(
    Dictionary<dynamic, object> a,
    Dictionary<object, dynamic> b,
    Dictionary<dynamic, dynamic> c)
{}

static void Test(
    [Dynamic(new[] { false, true, false })] Dictionary<object, object> a,
    [Dynamic(new[] { false, false, true })] Dictionary<object, object> b,
    [Dynamic(new[] { false, true, true })] Dictionary<object, object> c)
{}
  • DynamicAttribute は直接は使えない。dynamic キーワードを使ってくれといわれる。
Error	1	Do not use 'System.Runtime.CompilerServices.DynamicAttribute'. Use the 'dynamic' keyword instead.	C:\Users\TFSSETUP\Documents\Visual Studio 10\Projects\ConsoleApplication1\Program.cs	31	14	ConsoleApplication1