これは、(C++の逆に)C#で、C#のIListコレクション私の知る限りでは オブジェクトの割り当ては
IList<MyClass> foo = new List<MyClass>();
var bar = new List<MyClass>();
foo.AddRange() // doesn't compile
bar.AddRange() // compile
を使用している間、私が遭遇したものですオブジェクト型は、左辺(宣言)ではなく右辺(代入)を取得します。
ここに何か恋しいですか?
EDIT
私はまだあなたの答え、fooとbarが同じ型を持っていた後でも、それを得ることはありません!
"var"は "AddRange"メソッドを持つタイプリストですが、fooは "AddRange"メソッドを持たないインターフェイスであるIList タイプです。 –
sjkm
しかし、両方とも型Listでインスタンス化されます。 –
@Schneiderそれは本当ですが、コンパイラの観点からは、 'foo'の型は' List <> 'ではなく' IList <> 'です – rhughes