使用三元条件运算符选择函数
Selecting a function with ternary conditional operator
我是 C# 新手,有 C++ 背景。在 C++ 中,我可以这样做:
int function1 (int a, int b, int c) {
return ...;
}
int function2 (int a, int b, int c) {
return ...;
}
// Then, somewhere else...
bool condition = ...;
int value = (condition ? function1 : function2)(3, 4, 5);
它会调用 function1
或 function2
— 取决于 condition
— 并将指定的参数传递给调用的任何一个。
我的问题是,C# (8.0) 是否有类似的语法:
- 根据条件在两个函数之间进行选择,并且
- 只需要参数列表指定一次,并且
- 可以在一个简单易读的语句中完成吗?
如果可以的话,语法是什么?
我唯一能想到尝试的是与 C++ 相同的语法,例如:
int value = (condition ? function1 : function2)(3, 4, 5);
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
但它只是指向 ^
ed 部分并给出“预期的方法名称”错误(当然,这是有道理的)。我真的没有任何其他想法。
private int function1(int x, int y, int z) => 1;
private int function2(int x, int y, int z) => 2;
private void main(string[] args)
{
bool condition = true;
Func<int, int, int, int> func = condition ? function1 : function2;
func(1, 2, 3);
}
不过是两个语句,不确定是否可以像你问的那样合二为一。
我是 C# 新手,有 C++ 背景。在 C++ 中,我可以这样做:
int function1 (int a, int b, int c) {
return ...;
}
int function2 (int a, int b, int c) {
return ...;
}
// Then, somewhere else...
bool condition = ...;
int value = (condition ? function1 : function2)(3, 4, 5);
它会调用 function1
或 function2
— 取决于 condition
— 并将指定的参数传递给调用的任何一个。
我的问题是,C# (8.0) 是否有类似的语法:
- 根据条件在两个函数之间进行选择,并且
- 只需要参数列表指定一次,并且
- 可以在一个简单易读的语句中完成吗?
如果可以的话,语法是什么?
我唯一能想到尝试的是与 C++ 相同的语法,例如:
int value = (condition ? function1 : function2)(3, 4, 5);
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
但它只是指向 ^
ed 部分并给出“预期的方法名称”错误(当然,这是有道理的)。我真的没有任何其他想法。
private int function1(int x, int y, int z) => 1;
private int function2(int x, int y, int z) => 2;
private void main(string[] args)
{
bool condition = true;
Func<int, int, int, int> func = condition ? function1 : function2;
func(1, 2, 3);
}
不过是两个语句,不确定是否可以像你问的那样合二为一。