gpt4 book ai didi

返回装箱值类型是否为该类型的默认值的 C# 谓词

转载 作者:太空宇宙 更新时间:2023-11-03 19:28:38 32 4
gpt4 key购买 nike

是否可以创建一个采用装箱值类型并返回该值类型是否等于该类型默认值的方法?

所以我想创建一个具有以下签名的方法:

bool IsDefault(object boxedValueType);

注意:当 T 被设置为类型 object 时,以下代码将不起作用,因此 default(T) 将始终为 null

bool IsDefault<T>(T input)
{
return Equals(input, default(T));
}

最佳答案

有反射,但是比较慢

class Program
{
static void Main(string[] args)
{
Console.WriteLine("1 = " + IsDefault(1));
Console.WriteLine("0 = " + IsDefault(default(int)));

Console.WriteLine("1.0 = " + IsDefault(1.0));
Console.WriteLine("0.0 = " + IsDefault(default(double)));

Console.WriteLine("Today = " + IsDefault(DateTime.Today));
Console.WriteLine("1.1.1 = " + IsDefault(default(DateTime)));

//Console.WriteLine(IsDefault(""));
//Console.WriteLine(IsDefault(default(string)));

Console.ReadKey();
}

static bool IsDefault(object boxedValueType)
{
if (boxedValueType == null) throw new ArgumentNullException("boxedValueType");

var t = boxedValueType.GetType();
if (!t.IsValueType) throw new ArgumentOutOfRangeException("boxedValueType");

object def = Activator.CreateInstance(t);
return boxedValueType.Equals(def);
}
}

关于返回装箱值类型是否为该类型的默认值的 C# 谓词,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6613259/

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