gpt4 book ai didi

c# - 为什么 C# 可以检查 'var' 是否为空?

转载 作者:行者123 更新时间:2023-11-30 14:50:01 25 4
gpt4 key购买 nike

我有以下代码:

List<IMessage> messageList = new List<IMessage>();

foreach(var msg in messageList)
{
if(msg != null)
{

}
}

如何根据 null 检查 var msg?是什么告诉编译器 varIMessage 而不是 int 或其他不可为 null 的类型?

如果您查看 MSDN 中的示例他们给隐式类型的变量初始值(从而声明变得明确)。在我的例子中,我什至没有给它一个值,但编译器没有问题。编译器如何知道 msg 可以为空?

最佳答案

编译器知道 msg可以为空,因为它是静态类型的。静态类型是IMessage ,即使您没有给它命名。

编译器替换 IMessage 的原因对于 var是它出现在foreach (var identifier in collection )collection是实现 IEnumerable<IMessage> 的类型的表达式.

var的每一次出现将静态替换某些类型。 (有可能是dynamic,但是dynamic不是默认的,只能在静态类型推断规则下可以推断出来的情况下才适用)如果静态类型推断规则找不到唯一的类型替换,然后使用 var是不允许的。

关于c# - 为什么 C# 可以检查 'var' 是否为空?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37704364/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com