内联条件 C# - 下一个最佳解决方案?

max*_*axp 5 c# casting

看来编译器不会让这个语法飞翔。

void main()
{
  foo(false?0:"");
}

void foo(int i) {return;}
void foo(string s) {return;}
Run Code Online (Sandbox Code Playgroud)

我能看到的解决此问题的唯一其他方法如下:

void bar(object o) 
{
 if (o is string){//do this}
 else{//im an int, do this}
}
Run Code Online (Sandbox Code Playgroud)

有人有更好的想法吗?

Jus*_*ner 2

你的例子没有多大意义(第二个例子与第一个例子无关)。

我认为第一个例子就很好:

void main()
{
    foo("");
}
Run Code Online (Sandbox Code Playgroud)

因为 0 永远不会被传递(false 总是 false),并且如果没有在某处进行赋值(您的示例缺少),则无法使用内联条件运算符。

至于第二种方式,这可能是我更愿意看到的方式:

void bar(object o)
{
    if(o is string) foo(o as string);
    else foo((int)o);
}
Run Code Online (Sandbox Code Playgroud)