sam*_*cow 2 c# generics operator-overloading
我有以下方法:
virtual public int nonNeg(int? numIn)
{
if ((numIn < 0) || (numIn ==null))
{
return 0;
}
else return (int)numIn;
}
Run Code Online (Sandbox Code Playgroud)
我希望能够有一个单一的方法,可以采用字节,短路或整数来强制这些值为非负数.我怎么能做到这一点?
我通常不建议这样做,但是在我的脑海中,以下超载应该涵盖大多数情况.它们将涵盖可空类型和非可空类型,编译器将选择适当的重载.
public static T nonNeg<T>(T n) where T : struct, IComparable
{
if (n.CompareTo(default(T)) <= 0)
{
return default(T);
}
return n;
}
public static T nonNeg<T>(T? n) where T : struct, IComparable
{
if (!n.HasValue || n.Value.CompareTo(default(T)) <= 0)
{
return default(T);
}
return n.Value;
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
333 次 |
| 最近记录: |