int GetResult(string str);
string GetResult(string str);
byte GetResult(string str);
相同的形参,可以返回 1 或者‘1’或者“1”
public T GetResult<T>(string code) { bool isAuthorized = IsAuthorized(code); return (T)Convert.ChangeType(isAuthorized, typeof(T), CultureInfo.InvariantCulture); }
在 string 类型时候,实际返回的是 “FALSE”,不是想要的“0”。
是不是本身这个问题就有点问题呢
@pkyou: 这还不简单,遇到不是自己想要的就用你自己重新的方法噻
if (temp is string) { return (T) (object)(isAuthorized ? "1" : "0"); }
@刘宏玺: 靠谱!~
class XXX<T>{
T GetResult(string str)
}
在函数内 要判断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);
如果是这样,岂不是每一个类型都要作出判断了?
倒是可以用
typeof(T).Name =="String"
来判断是否为string类型,这么用觉得不太好,不知道还有没有比较好的方法了
你这个应用场景是什么?
你这样将使得系统无法判断调用的是哪一个函数.
可以加我微信214710841, 继续交流
是一个判断是否被授权的方法,返回值 想有 bool型、int型、string型,这些东西。