C#中 object类型的参数遇到重载该如何写得优雅?

大致就是有一个object类型的参数,在调用时遇到重载,目前只能根据类型直接进行强制转换,代码看起来很坑爹:
void text(object obj){
if(obj is int){
func((int)obj);

else{
func((string)obj)


只能这样了吗?是否有更合理的做法?

c#

4个回答

void DealObjectStr(ref object obj)//写一个方法处理object参数
{
int pp=0;
if(int.TryParse(obj.ToString(),ref pp))
{
obj=Convert.ToInt32(obj);
}else
{
object= obj.ToString();
}
}

DealObjectStr(ref obj);//调用方法前,先处理参数
func(obj);

就是利用ref 参数的特点写个方法处理object类型的参数

用泛型啊 可以解决你的问题

只能这样!!!
或者你把text重载
void text(int param)
void text(string param)
.......

Csdn user default icon
上传中...
上传图片
插入图片
抄袭、复制答案,以达到刷声望分或其他目的的行为,在CSDN问答是严格禁止的,一经发现立刻封号。是时候展现真正的技术了!
立即提问
相关内容推荐