从变量中查找default()值
本文关键字:default 查找 变量 | 更新日期: 2023-09-27 17:57:41
是否可以从变量中获取默认值?
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