gpt4 book ai didi

c# - 当将 T 与 null 进行比较并且 T 是一个结构时,CLR 会做什么?

转载 作者:太空狗 更新时间:2023-10-29 18:17:15 26 4
gpt4 key购买 nike

private static void SaveOrRemove<T>(string key, T value)
{
if (value == null)
{
Console.WriteLine("Remove: " + key);
}

//...
}

如果我调用将 0 传递给值:SaveOrRemove("MyKey", 0),条件 value == null 为 false,则 CLR 不会生成 值==默认(T)。到底发生了什么?

最佳答案

当 T 是不可为 null 的值类型时,JIT 编译器基本上会删除与 null 的任何比较,并假设它们都为 false。 (可为空的值类型将与该类型的空值进行比较,这可能是您所期望的。)

如果您希望它与默认值进行比较,您可以使用:

if (EqualityComparer<T>.Default.Equals(value, default(T))
{
...
}

关于c# - 当将 T 与 null 进行比较并且 T 是一个结构时,CLR 会做什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2476755/

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