C#-运算符:?-是否可以向函数传递某些内容或不传递任何内容?

C#-运算符:?-是否可以向函数传递某些内容或不传递任何内容?,c#,C#,我知道还有其他方法可以做我需要做的事情。我只是想知道是否能做到 这是关于用问号代替if-else的问题 public void doSomething() { ...... } public void doSomething(int i) { ...... } public void f(int i) { doSomething( i > 0 ? [NOTHING] : i ); } 我是否可以编写(intead of[NOTHING])来不向函数传递任何参数并能够调用doSo

我知道还有其他方法可以做我需要做的事情。我只是想知道是否能做到

这是关于用问号代替if-else的问题

public void doSomething() { ...... }
public void doSomething(int i) { ...... }
public void f(int i)
{
    doSomething( i > 0 ? [NOTHING] : i ); 
}

我是否可以编写(intead of[NOTHING])来不向函数传递任何参数并能够调用doSomething()?

否。您应该使用标准的
if..else
,或者如果
doSomething
返回某个内容,您可以用这种方式重写它

i > 0 ? doSomething() : doSomething(i);

三元分析的结果必须是相容的。方法调用由编译器进行预处理,以了解要跳转到哪个指令。三元运算符不能重写它。

你不能只写
i>0吗?doSomething():doSomething(i)@user2296177
i>0?doSomething():doSomething(i)-当doSomething()为空时,这是否会编译?@user3185569对我来说是这样的。@user2296177您在哪里编译的?因为三元只能在需要表达式时使用,而不能作为语句使用。这将失败,编译错误CS0201.@ USS229 6177这个问题是关于C,而不是C++。我不认为这编译方法是无效的或非空虚。@ USS318565不,它没有。