日期:2014-05-18  浏览次数:20901 次

散分 , & 一个语法问题吧 ~`
有一个函数 A(int a1,string a2)
然后想要调用他 . 但是调用的时候需要做一下判断 
如果 a1 是 xxx 的时候 就要用另外的值 c // c 不是和a1 是同一个类型 

我不想这么写 :
if (a1 == xxx)
  a(c,a2)
else
  a(a1,a2)

我想 这么 a( ????? ,a2) 写
有人能知道 ???? 里面应该填什么么 ...

------解决方案--------------------
a(a1==xxx?c:a1,a2) ?
这样写不行的, ?运算符, 结果类型要求一致, c和a1不是同类型.
------解决方案--------------------
没辙,

想想就算写成一行了```估计生的IL也不会少吧```
------解决方案--------------------
有点不理解搂主的目的,c不是和a1是同一个类型,那如果要调用函数A,c总要能够转换成int的。
A(a1==xxx ? (int)c : a1,a2) ?
------解决方案--------------------
很简单,写重载1 A(int a1,string a2) ,2 A(string c,string a2) 
调用时判断,
if (a1 == xxx) 
a(c,a2) //方法2
else 
a(a1,a2) 




------解决方案--------------------
jf
------解决方案--------------------
楼主说了:
-----------------------
我不想这么写 : 
 if (a1 == xxx) 
a(c,a2) 
 else 
a(a1,a2) 
-----------------------
说明这样写是能通过编译的,也就是说c能够转换成int,只是搂主想要写在一个调用里面。是不是这个意思?...

------解决方案--------------------
jeremyyang824 wrote
--------------------------------
楼主说了:
-----------------------
我不想这么写 :
if (a1 == xxx)
a(c,a2)
else
a(a1,a2)
-----------------------
说明这样写是能通过编译的,也就是说c能够转换成int,只是搂主想要写在一个调用里面。是不是这个意思?...
---------------------------------

这样理解是不行的.
如果c能转换成int,那楼主又何必多此一问.
很明显 方法 a 有两个重载.

------解决方案--------------------
接分~
------解决方案--------------------
呵呵 所以我才说有点不太明白搂主的意思啊...
------解决方案--------------------
200分,楼主阔气啊。。。
------解决方案--------------------
c是什么类型的呀~
------解决方案--------------------
接分。。。
------解决方案--------------------
C#是强类型语言. 用哪个重载必须是编译时就能确定的. 要求运行时决定是不可能的.
------解决方案--------------------
凑个热闹,接分
------解决方案--------------------
直接来个强转看 a(a1.toInt32(),a2);
试试看,我没试过.
------解决方案--------------------
用工厂模式实现
------解决方案--------------------
关注!
------解决方案--------------------
你变来个Object类型嘛
------解决方案--------------------
up
------解决方案--------------------
a(a1.toInt32(),a2);
------解决方案--------------------
把每个类型都重载
1 A(int a1,string a2) {}
2 A(string c,string a2) {}
3.
4.
......

------解决方案--------------------
jf
------解决方案--------------------