在我的代码中,我经常需要将变量与几个值进行比较:
if ( type == BillType.Bill || type == BillType.Payment || type == BillType.Receipt )
{
// Do stuff
}
Run Code Online (Sandbox Code Playgroud)
我一直在想我能做到:
if ( type in ( BillType.Bill, BillType.Payment, BillType.Receipt ) )
{
// Do stuff
}
Run Code Online (Sandbox Code Playgroud)
但当然那是允许这种情况的SQL.
C#中有更整洁的方式吗?
Mar*_*ark 75
你可以用.Contains这样做:
if(new[]{BillType.Receipt,BillType.Bill,BillType.Payment}.Contains(type)){}
Run Code Online (Sandbox Code Playgroud)
或者,使用更易读的语法创建自己的扩展方法
public static class MyExtensions
{
public static bool IsIn<T>(this T @this, params T[] possibles)
{
return possibles.Contains(@this);
}
}
Run Code Online (Sandbox Code Playgroud)
然后叫它:
if(type.IsIn(BillType.Receipt,BillType.Bill,BillType.Payment)){}
Run Code Online (Sandbox Code Playgroud)
was*_*atz 10
还有switch语句
switch(type) {
case BillType.Bill:
case BillType.Payment:
case BillType.Receipt:
// Do stuff
break;
}
Run Code Online (Sandbox Code Playgroud)
假设type是枚举,您可以使用FlagsAttribute:
[Flags]
enum BillType
{
None = 0,
Bill = 2,
Payment = 4,
Receipt = 8
}
if ((type & (BillType.Bill | BillType.Payment | BillType.Receipt)) != 0)
{
//do stuff
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
27930 次 |
| 最近记录: |