c# - 是否有类似条件运算符但用于表达式的东西?

标签 c#

对于给变量赋值,我可以使用以下方法:

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/

相关文章:

c# 按值而不是键对 StringDictionary 进行排序

c# - 在 EF Core 2.0 中动态访问表

c# - 二维三边测量问题

c# - XNA 中的 FPS 风格相机目标计算

c# - 在循环中创建对象

c# - 如何使用 C# 缩进区域内容?

c# - WndProc 覆盖奇怪的消息,不合适

c# - wpf - Expander 的标题适合内容宽度?

c# - 针对 x86 和 x64 的设置?

应用程序中的 C# 错误