散分 , & 一个语法问题吧 ~`
有一个函数 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
------解决方案--------------------