gpt4 book ai didi

c# - 从变量中找到 default() 值

转载 作者:行者123 更新时间:2023-11-30 21:47:22 25 4
gpt4 key购买 nike

是否可以从变量中获取默认值?

public static int CountNonDefault<T>(this T[] v)
{
int count = 0;

foreach (var item in v)
{
if (item.GetType != default(typeof(item)))
{
count++;
}
}

return count;
}

我试过以下方法都无济于事:

item.GetType != default(item.GetType().GetProperty("Value").PropertyType)
item.GetType != default(typeof(item));
item.GetType != default(item.GetType());

最佳答案

因为 item 变量是泛型类型 T 那么 default(T) 怎么样:

T defaultValue = default(T);
foreach (T item in v)
{
if (item != defaultValue)
{

}
}

要使用 != 比较两个 T 类型的对象,您必须像这样更改您的方法:

 public static int CountNonDefault<T>(this T[] v) : where T : EqualityComparer<T>

如果这不是您的选择,那么您可以采用以下替代方法:

T defaultValue = default(T);
foreach (T item in v)
{
if(item == null && defaultValue == null || (item.Equals(defaultValue)))
{

}
}

这是为了防止 .Equals() 抛出 NullReferenceException

关于c# - 从变量中找到 default() 值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38472786/

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