首页 新闻 赞助 找找看

C# 想写一个方法, 函数名相同,形参列表相同,返回值不同,怎么写比较好呢 ?

0
悬赏园豆:5 [已解决问题] 解决于 2016-11-07 16:31

int GetResult(string str);

string GetResult(string str);

byte GetResult(string str);

 

相同的形参,可以返回 1 或者‘1’或者“1”

pkyou的主页 pkyou | 初学一级 | 园豆:98
提问于:2016-11-07 14:12
< >
分享
最佳答案
0
        public T GetResult<T>(string code)
        {
            bool isAuthorized = IsAuthorized(code);
            return (T)Convert.ChangeType(isAuthorized, typeof(T), CultureInfo.InvariantCulture);
        }

 

收获园豆:5
刘宏玺 | 专家六级 |园豆:14020 | 2016-11-07 15:49

在 string 类型时候,实际返回的是 “FALSE”,不是想要的“0”。 

pkyou | 园豆:98 (初学一级) | 2016-11-07 15:53

是不是本身这个问题就有点问题呢 

pkyou | 园豆:98 (初学一级) | 2016-11-07 15:54

@pkyou: 这还不简单,遇到不是自己想要的就用你自己重新的方法噻

if (temp is string) { return (T) (object)(isAuthorized ? "1" : "0"); }

刘宏玺 | 园豆:14020 (专家六级) | 2016-11-07 15:54

@刘宏玺: 靠谱!~ 

pkyou | 园豆:98 (初学一级) | 2016-11-07 15:56
其他回答(2)
0

class XXX<T>{

T GetResult(string str)

}

Daniel Cai | 园豆:10424 (专家六级) | 2016-11-07 14:17

在函数内 要判断T的类型呗,

 public T GetResult<T> (string code) 
        {
            T temp = default (T);
            bool isAuthorized = IsAuthorized(code);
            
            if (temp is bool)
            {
                return (T) (object) isAuthorized;
            }

            if (temp is string)
            {
                return (T) (object)(isAuthorized ? "1" : "0");
            }

            if (temp is int)
            {
                return (T)(object)(isAuthorized ? 1 : 0);
            }
            return default(T);
        }

temp 在string 类型的时候 是始终为null的 ,T temp = default (T);

支持(0) 反对(0) pkyou | 园豆:98 (初学一级) | 2016-11-07 14:22

如果是这样,岂不是每一个类型都要作出判断了?

支持(0) 反对(0) pkyou | 园豆:98 (初学一级) | 2016-11-07 14:25

倒是可以用   

typeof(T).Name =="String"

来判断是否为string类型,这么用觉得不太好,不知道还有没有比较好的方法了

支持(0) 反对(0) pkyou | 园豆:98 (初学一级) | 2016-11-07 15:33
0

 你这个应用场景是什么?

你这样将使得系统无法判断调用的是哪一个函数.

小彬 | 园豆:947 (小虾三级) | 2016-11-07 14:32

可以加我微信214710841, 继续交流

支持(0) 反对(0) 小彬 | 园豆:947 (小虾三级) | 2016-11-07 14:33

是一个判断是否被授权的方法,返回值 想有 bool型、int型、string型,这些东西。

支持(0) 反对(0) pkyou | 园豆:98 (初学一级) | 2016-11-07 14:35
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册