2016-07-14 62 views
2

我知道还有其他方法可以做我需要做的事情。我只想知道它是否可以完成。C# - 操作员:? - 是否有可能传递一些东西或没有东西到一个函数?

这是关于问号,取代一个if else。

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

有什么我可以写传不带参数的功能和能够调用DoSomething的()(这一翻译[NOTHING]的)?

+2

难道你不能只写'i> 0吗? doSomething():doSomething(i);'。 – user2296177

+0

@ user2296177'i> 0? doSomething():doSomething(i);' - 当* doSomething()*为void时,它甚至会编译吗? – user3185569

+0

@ user3185569它适合我。 – user2296177

回答

6

没有。您应该使用标准if..else,或者如果doSomething返回某些内容,则可以用这种方法重写它。

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

三元结果必须兼容。该方法调用被编译器烘焙以知道要跳转到的指令。三元运算符不能重写那个。

+1

如果doSomething没有返回值,这将不起作用。 – DavidG

+1

我不认为这会编译该方法是无效的还是无效的。 – user3185569

+1

@ user3185569不,它没有。 – DavidG

相关问题