微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

使用三元条件运算符选择函数

如何解决使用三元条件运算符选择函数

我是 C# 新手,有 C++ 背景。在 C++ 中,我可以做这样的事情:

int function1 (int a,int b,int c) {
    return ...;
}

int function2 (int a,int c) {
    return ...;
}

// Then,somewhere else...
bool condition = ...;
int value = (condition ? function1 : function2)(3,4,5);

它会调用 function1function2 — 取决于 condition — 并将指定的参数传递给被调用的任何一个

我的问题是,C# (8.0) 是否有类似的语法:

  • 根据条件在两个函数之间进行选择,以及
  • 只需要指定一次参数列表,并且
  • 可以在一个简单易读的语句中完成吗?

如果可以,语法是什么?

我唯一能想到的尝试是与 C++ 相同的语法,例如:

int value = (condition ? function1 : function2)(3,5);
            ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 

但它只是指向 ^ ed 部分并给出“方法名称预期”错误(当然,这是有道理的)。我真的没有任何其他想法。

解决方法

Func<T1,T2,T3,TResult> 应该这样做

private int function1(int x,int y,int z) => 1;
private int function2(int x,int z) => 2;

private void main(string[] args)
{
    bool condition = true;
    Func<int,int,int> func = condition ? function1 : function2;
    func(1,2,3);
}

不过,这是两个声明,不确定是否可以像您要​​求的那样将其合并。

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。