gpt4 book ai didi

C# 中的运算符重载

转载 作者:太空狗 更新时间:2023-10-29 19:49:23 25 4
gpt4 key购买 nike

我昨晚在写一个 if 表达式时有了一个想法有时当你这样表达时,表达往往会很长:

if(x == 1 || x == 2 || x == 33 || x == 4 || x == -5 || x == 61) { ... }

x 可以是枚举、字符串、整数、字符。

我想知道是否有更简单的写法。例如,我认为 sql 的运算符“in”可以缩短表达式:

if(x in (1,2,33,4,-5,61)) { ... }

我知道您不能使用“in”编写这样的表达式,因为编译器的词法分析器和解析器无法识别它。

也许其他解决方案作为不同类型 x 的扩展方法是解决方案?在即将到来的 .NET 4.0 中,我听说了有关参数化方法的一些信息,这是否应该解决提供给 if 表达式的 n 个参数?

也许你理解我的意思,你有什么好的做法/解决这个问题的想法吗?

/丹尼尔

最佳答案

我通常写一个Extension Method如下:

public static bool In<T>(this T source, params T[] list)
{
if(null==source) throw new ArgumentNullException("source");
return list.Contains(source);
}

可以这样使用:

if(x.In(1,6,9,11))
{
// do something....
}

关于C# 中的运算符重载,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1672537/

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