看来编译器不会让这个语法飞翔。
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)
有人有更好的想法吗?
你的例子没有多大意义(第二个例子与第一个例子无关)。
我认为第一个例子就很好:
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)
| 归档时间: |
|
| 查看次数: |
4941 次 |
| 最近记录: |