当IList by ref是方法签名时,通过ref传递List

Dan*_*ams 4 c# ilist list

我在使用下面的代码时遇到问题.我希望我的方法采用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?

dee*_*see 7

类型推断妨碍了这里.这var相当于List直接声明,但你想要一个IList.您必须在声明中明确写出预期的类型.

IList<foo> foo = new List<Foo>();
DoFoo( ref foo)
Run Code Online (Sandbox Code Playgroud)