对于给变量赋值,我可以使用以下方法:
className = special ? "Test" : "";
但是如果我只想在 special 为真时调用一个函数怎么办?我试过了
special?classNameIsTest() : classNameIsNotTest();
但这行不通。有这样的东西吗?或者我应该继续使用
if(special) classNameIsTest();
else classNameIsNotTest();
最佳答案
如果两个方法具有相同的签名(相同的参数和相同的返回类型),您可以这样做。例如,如果两个方法都是无效的并且不带参数
(special ? (Action)Foo : Bar).Invoke();
如果两个方法都取一个整数但是都是void
(special ? (Action<int>)Foo : Bar).Invoke(20);
如果两个方法都接受一个整数,一个字符串,并返回 bool 值
bool result = (special ? (Func<int, string, bool>)Foo : Bar).Invoke(20, "...");
所以你可以这样做,但我不会那样做,因为这不是通常的编程方式。它只是添加样板代码。
关于c# - 是否有类似条件运算符但用于表达式的东西?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53562370/