[英]How to convert struct to NULL if value is default
How to convert struct to nullable struct if the value is default value.如果值为默认值,如何将结构转换为可空结构。 In the code below the EqualityComparer<T>.Default.Equals
return false when variable of type int
has zero value在下面的代码中,当int
类型的变量为零值时, EqualityComparer<T>.Default.Equals
返回 false
public static Nullable<T> ConvertToNullIfDefault<T>(this T src) where T : struct
{
if (EqualityComparer<T>.Default.Equals(src))
{
return null;
}
return (Nullable<T>)src;
}
Test测试
[Fact]
public void ConvertToNullIfDefault_ReturnsNull_WhenIntegerIsDefault()
{
var val = default(int);
var result = val.ConvertToNullIfDefault();
Assert.Null(result);
}
A better approach is to use the IEquatable<T>
constraint:更好的方法是使用IEquatable<T>
约束:
public static Nullable<T> ConvertToNullIfDefault<T>(this T src)
where T : struct, IEquatable<T>
{
if( src.Equals( default(T) ) )
{
return null;
}
return (Nullable<T>)src;
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.