2016-06-12 6 views
0

ことが可能な場合:ジェネリックインターフェイスがダイナミックタイプを実装できなかった理由

IList <dynamic> = new List <dynamic>; 

か:

class A <T> 
{ 
A(T){} 
} 

class B: A <dynamic> {} 

。これを行うことができない理由:

class U: IEnumerable <dynamic> {} 

+0

質問は、リンクhttp://programmers.stackexchange.com/questions/322034/why-generic-interface-cannot-implement-dynamic-typeで回答されています。 –

答えて

1

それについて考えるのが最も簡単な方法 - ダイナミックタイプはではありません。

dynamicは、コンパイル時のチェックをすべてオフにし、代わりに実行時にそれらを実装するコンパイラ指令です。

あなたは変数の動的宣言する場合:

dynamic t = 123; 

t = t.Length; // crashes at runtime 

を実際にあなたがその変数を伴う式にすべてのコンパイル時のチェックをオフにし、System.Objectとして変数を宣言している:

object t = 123; 

unchecked_for_errors 
{ 
    t = t.Length;  
} 

あなたは<dynamic>をタイプのように使用することはできません。なぜなら、実際にはタイプではないからです。

代わりに<object>を使用してください。

+0

あなたは間違いなく私は定期的なタイプとしてダイナミックを使用している私の質問に見ることができます。 –

関連する問題