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
- オプション引数、再コンパイル時に注意必要