更简单的表示法或在 C# 中执行 If Else 的方法
Simpler Notation or Way to do If Else in C#
我很佩服? : operator
的简洁,喜欢
bool b;
int x,y,z;
x = b ? y : z;
替换
if(b)
x = y;
else
x = z;
所以我想知道是否有一些更简单的符号或方法 if/else
在更复杂的表达式中,或者做一些有点像 lambda 的东西,我可以在 lamda 中编写更复杂的动作?
例如,可能是一些虚构的符号,例如 @ $
要做
x = b @ { z*=3.14; return y; } //if b true do z*=3.14 and x = y
$ { y-= 100; return z; } //if b false do y-=100 and x = z
或
bool b , c
int[] count = new[] {0, 0, 0};
b @ count[0]++ //if b is true do count[0]++
$ c @ count[1]++ //if b is false c is true do count[1]++
$ count[2]++; //if b,c all false do count[2]++
我认为 if/else 表示法非常简短,但是我很高兴知道是否有更简单的方法。
希望在C#5.0下也能用,C#6.0也欢迎
您可以使用带有 lambda 的通用扩展方法:
public static T IIf<T>(this bool valueToCheck, Func<T> ifTrue, Func<T> ifFalse)
{
return valueToCheck ? ifTrue() : ifFalse();
}
并这样称呼他们:
bool flag = ComputeABoolean();
var result = flag.IIf(() => { Console.WriteLine("Yeah this is sort of crazy"); return "Value was true."; },
() => { Console.WriteLine("But it does work."); return "value was false";});
这允许复杂的表达式、副作用等
就我个人而言,我认为我永远不会这样做。
我很佩服? : operator
的简洁,喜欢
bool b;
int x,y,z;
x = b ? y : z;
替换
if(b)
x = y;
else
x = z;
所以我想知道是否有一些更简单的符号或方法 if/else
在更复杂的表达式中,或者做一些有点像 lambda 的东西,我可以在 lamda 中编写更复杂的动作?
例如,可能是一些虚构的符号,例如 @ $
要做
x = b @ { z*=3.14; return y; } //if b true do z*=3.14 and x = y
$ { y-= 100; return z; } //if b false do y-=100 and x = z
或
bool b , c
int[] count = new[] {0, 0, 0};
b @ count[0]++ //if b is true do count[0]++
$ c @ count[1]++ //if b is false c is true do count[1]++
$ count[2]++; //if b,c all false do count[2]++
我认为 if/else 表示法非常简短,但是我很高兴知道是否有更简单的方法。
希望在C#5.0下也能用,C#6.0也欢迎
您可以使用带有 lambda 的通用扩展方法:
public static T IIf<T>(this bool valueToCheck, Func<T> ifTrue, Func<T> ifFalse)
{
return valueToCheck ? ifTrue() : ifFalse();
}
并这样称呼他们:
bool flag = ComputeABoolean();
var result = flag.IIf(() => { Console.WriteLine("Yeah this is sort of crazy"); return "Value was true."; },
() => { Console.WriteLine("But it does work."); return "value was false";});
这允许复杂的表达式、副作用等
就我个人而言,我认为我永远不会这样做。