似乎编译器不会让这种语法飞起来。

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

void foo(int i) {return;}
void foo(string s) {return;}

我可以看到的解决此问题的唯一其他方法如下:
void bar(object o)
{
 if (o is string){//do this}
 else{//im an int, do this}
}

有人有更好的想法吗?

最佳答案

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

我认为第一个例子会很好,因为:

void main()
{
    foo("");
}

由于 0 无论如何都不会被传递(false 总是 false),并且您不能在没有赋值的情况下使用内联条件运算符(您的示例缺少)。

至于第二种方式,这可能是我希望看到的方式:
void bar(object o)
{
    if(o is string) foo(o as string);
    else foo((int)o);
}

关于c# - 内联条件 c# - 下一个最佳解决方案?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/3557447/

10-10 18:17
查看更多