gpt4 book ai didi

C#语法糖重载

转载 作者:行者123 更新时间:2023-11-30 19:03:12 25 4
gpt4 key购买 nike

我有以下方法:

virtual public int nonNeg(int? numIn)
{
if ((numIn < 0) || (numIn ==null))
{
return 0;
}
else return (int)numIn;

}

我希望能够有一个单一的方法,它可以接受字节、短裤或整数,以将这些值强制为非负数。我怎样才能做到这一点?

最佳答案

我通常不会建议这样做,但在我的脑海中,以下重载应该涵盖您的大部分情况。它们将覆盖可空类型和不可空类型,编译器将选择合适的重载。

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;
}

关于C#语法糖重载,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6113461/

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