IEnumerable 与 IList 中的 Null 值

发布于 2024-07-15 05:15:02 字数 59 浏览 8 评论 0原文

为什么 IEnumerable = null 可以毫无错误地传递,但 IList=Null 却无法编译?

Why can an IEnumerable = null be passed without error but an IList=Null will not compile?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(4

熟人话多 2024-07-22 05:15:02

这不是真的。 您可以将 IEnumerable 或 IList 类型的变量设置为空引用,它将进行编译。

您的代码中还有其他错误。

That's not true. You can set a variable of type IEnumerable or IList to a null reference and it will compile.

There is something else in your code that is wrong.

顾忌 2024-07-22 05:15:02

这工作正常:

IList<int> Foo() {
    return null;
}

This works fine:

IList<int> Foo() {
    return null;
}
苏佲洛 2024-07-22 05:15:02

很难确切地知道你的意思。 您说 IEnumerable 的空引用可以“无错误地传递”。 “传递”是运行时的事情,但你说使用 IList 会出现编译错误? 听起来很困惑。 您需要向我们提供更多信息。

It's hard to know exactly what you mean. You say a null reference for an IEnumerable can be 'passed without error'. 'Passing' is a runtime thing, but you say with an IList you get a compile error? That sounds confused. You'll need to give us some more info.

九八野马 2024-07-22 05:15:02

好吧,对于您的具体问题,可能是因为 C# 区分大小写 - null 是文字,但 Null 不是。 鉴于您还没有发布任何可以实际编译的代码,所以很难说。

如果这不是您的真实代码中的问题,请发布您的真实代码,我们将看看我们能做什么。

Well, with your exact question, it could be because C# is case-sensitive - null is a literal, but Null isn't. It's hard to say given that you haven't posted any code which could actually compile though.

If that's not the problem in your real code, post your real code and we'll see what we can do.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文