Initialize IList<T> C#
有没有特殊的方法来初始化
1 2 | IList<ListItem> allFaqs = new IList<ListItem>(); // Error I get here: Cannot create an instance of the interface 'IList<ListItem>' |
Resharper建议像这样初始化它:
1 | IList<ListItem> allFaqs = null; |
但在我将项目添加到此列表时,这不会导致空引用异常吗?
还是应该只使用
谢谢!
错误是因为您试图创建接口的实例。
将代码更改为:
1 |
或
1 |
它应该编译。
很明显,您还必须更改代码的其余部分才能适应。
您可以创建任何实现
1 2 3 |
等等,一切都会好起来的。
您的问题是,IList是一个接口,而不是类。无法初始化接口。
您可以有一个接口实例,但需要用实现该接口的类初始化它,例如:
1 |
前面的代码行可以工作,但您只能使用ilist的成员,而不能使用初始化的任何类的完整集。
IList不是类;它是类可以实现的接口。接口本身只是类的使用者和类本身之间的契约。这一行代码可以工作:
1 |
这有帮助吗?
IList是接口,而不是类。如果要初始化它,则需要将其初始化为实现IList的类,具体取决于内部的特定需求。通常,IList是用列表初始化的。
1 |
无法实例化接口(ilist是接口)。
您需要实例化实现IList的东西,
像这样:
1 |
还有其他类型的ilist,但是list是一个很好的开头。
IList是一个接口,因此无法实例化它。各种类实现IList。实现IList的一个类是List。您可以这样实例化它:
1 |
你需要这样做:
1 |
在代码中,您试图初始化接口。
1 |