gpt4 book ai didi

c# - 确定一个值是否设置为其类型的默认值的可维护方法是什么?

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

假设我有如下代码:

var someCollection = new int[] {};
var result = someCollection.SingleOrDefault();

然后我想确定 result 是否是默认值。 但是,我想以一种可维护的方式这样做,这样如果 someCollection 的元素类型发生变化,其余代码就不需要更改。

这通常看起来(在一般意义上)完成的方式是 result == null。在这种情况下,当然,该类型不是引用类型,所以这是行不通的。

避免这种假设的改进是 result == default(int)。但是,改变元素类型也需要将参数更改为default,所以仍然不能满足只改变一个地方类型的要求。

验收标准

  1. 内置逻辑优于自定义逻辑。
  2. 代码优雅简洁者优先。
  3. 有高效代码者优先。 (对于引用类型,只应进行引用比较。)

最佳答案

您可以使用 default关键词。由于您不知道类型是什么,因此可以使用泛型。

public bool IsDefault<T>(T value)
{
return EqualityComparer<T>.Default.Equals(value, default(T));
}

关于c# - 确定一个值是否设置为其类型的默认值的可维护方法是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15236168/

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