q8547957
冷梦无邪
采纳率100%
2018-03-26 06:28

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

5
  • c#
已采纳

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

else{
func((string)obj)


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

  • 点赞
  • 写回答
  • 关注问题
  • 收藏
  • 复制链接分享
  • 邀请回答

5条回答

  • qq_37452239 qq_37452239 3年前

    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);

    点赞 1 评论 复制链接分享
  • oTINKLElove 黑羽噬欣 2月前

    void text(object obj){
        dynamic d = obj;
        func(d);
    }

    点赞 评论 复制链接分享
  • abby534706358 Dr.Xin 3年前

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

    点赞 评论 复制链接分享
  • qq_37452239 qq_37452239 3年前

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

    点赞 评论 复制链接分享
  • baidu_30233079 baidu_30233079 3年前

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

    点赞 评论 复制链接分享

相关推荐