我在使用下面的代码时遇到问题.我希望我的方法采用IList,而不是List但是我被误导了?
这是我的方法:
public void DoFoo( ref IList<Foo> thingy) {}
Run Code Online (Sandbox Code Playgroud)
这是声明和电话:
var foo = new List<Foo>();
DoFoo( ref foo)
Run Code Online (Sandbox Code Playgroud)
为什么这不会编译?foo肯定实现IList If是因为编译必须从List转换为IList?
类型推断妨碍了这里.这var
相当于List
直接声明,但你想要一个IList
.您必须在声明中明确写出预期的类型.
IList<foo> foo = new List<Foo>();
DoFoo( ref foo)
Run Code Online (Sandbox Code Playgroud)