出一个题目,200分,考考你:该如何处理
出一个题目,200分,考考你:怎么实现函数ChangeType,能达到如下功能?int a ChangeType( Object,a.GetType()
出一个题目,200分,考考你: 怎么实现函数ChangeType,能达到如下功能? int a= ChangeType( Object,a.GetType()); string b= ChangeType( Object,b.GetType()); bool c= ChangeType( Object,c.GetType()); 就是根据前面的类型自动实现转换Object为该强类型? 支持常规的int,String,bool等类型就可以. .Net2.0实现,和.Net3.0以上实现. 注意: Convert.ChangeType实现不了这个功能. 因为他还需要强制转换,如:int i = (int)Convert.ChangeType(d, typeof(int)); [解决办法] 能力不够,专业路过![解决办法] 路过,帮顶[解决办法] 你们公司的面试题吗!?[解决办法] 先占位[解决办法] 占个位先!![解决办法] 这题不难吧....... 既然你是规定可以用函数实现... 既然你规定了2个传入参数。。。 那结果不就出来了么,过程不过是些判断。比如 "s"强行转换成 int的话 是直接抛出异常 还是给一个ascii值。 等等。[解决办法] 路过,围观。。。。。。。。[解决办法] 俺是来参观的,呵呵[解决办法] 先占位[解决办法] void ChangeType<T>(Object o, typeof(T), out T result) { result = (T)Convert.ChangeType(o, typeof(T)); } int a; ChangeType<int>(o, a.GetType(), out a);[解决办法]
探讨 void ChangeType<T>(Object o, typeof(T), out T result) { result = (T)Convert.ChangeType(o, typeof(T)); } int a; ChangeType<int>(o, a.GetType(), out a);[解决办法] 瞄一眼.....
[解决办法] 这个是不可能,你若是希望ChangeType有时的返回类型是int,有时是string,这岂不是开玩笑。除非定义一个泛型版本的ChangeType:
public T ChangeType<T>(object obj)
{
return T(obj);
}
[解决办法] 你的意思是传一个值,自动转换类型,是数字就INT 是bit就bool 是文字就STRING 撒
这不就是一个判断的问题了么了,如果你BIT 传的是 true 这种 不是 0或1 那就好办,直接判断啊 是否是bool 如果是不 的话就 强制转换INT 啊 有异常就说明只是string类型了啊。
[解决办法] 抱歉,看成C++了,原来以为函数重载就可以了……
[解决办法] 路过!!! 有点难度!
[解决办法] C# codeclass Program { static void Main(string[] args) { Object ob = 3; int a = ChangeType<int>(ob); Console.WriteLine(a.GetType()); Console.WriteLine(a); Console.WriteLine(ChangeType<string>(ob).GetType()); } static T ChangeType<T>(object oj) { T result = (T)Convert.ChangeType(oj, typeof(T)); return result; } }[解决办法] LZ,你所说的转换都不是问题。有点障眼法的意思,我开始以为你只是需要转换。 如果只需要转换的话把void函数就行,在里面把值赋给全局变量 到时候取就可以 你不如这样问: C# code怎么让一个函数既能返回int值又能返回string值,还能反回bool值 [解决办法] 先做个记号,有时间接着研究。[解决办法]
探讨 C# code class Program { static void Main(string[] args) { Object ob = 3; int a = ChangeType<int>(ob); Console.WriteLine(a.GetType()); ……[解决办法] 路过~[解决办法] 泛型就可以了.17楼的就有点样子了。函数里弄好异常处理就可以了。 不知道为什么会放200分。可能是我没看到题目的精髓处吧 要么就是楼主是新手或者是从别的语言过来的没有泛型概念。[解决办法] 探讨 void ChangeType<T>(Object o, typeof(T), out T result) { result = (T)Convert.ChangeType(o, typeof(T)); } int a; ChangeType<int>(o, a.GetType(), out a);[解决办法] public interface TypeConverter { public Object convertValue(Map context, Object target, Member member, String propertyName, Object value, Class toType); } 看 ognl源代码,不知道NET有没有对应版本。改改即可![解决办法] 获得3个MSVIP称号,怎么可能是对C#泛型不了解的人呢。[解决办法] 接分 路过 不懂 !!!!!!![解决办法] 探讨 LZ,你所说的转换都不是问题。有点障眼法的意思,我开始以为你只是需要转换。 如果只需要转换的话把void函数就行,在里面把值赋给全局变量 到时候取就可以 你不如这样问: C# code 怎么让一个函数既能返回int值又能返回string值,还能反回bool值 是这样吧?[解决办法] 不用泛型解决不了 除非写N个函数(函数名称不相同,重载都重载不了!) 泛型楼上有了,哈哈,接分也![解决办法] 走着说吧 先顶一下[解决办法] 能力不够,专业路过![解决办法] 路过 留个记号[解决办法] 仅仅泛型是没法解决的, 我能想到的 就是执行动态语句,,[解决办法] 代码的内部很好工作,假设传入的参数是 obj,deltailType switch(detailType) { case "System.Int32": return (int)Convert.ChangeType(obj,int); case "System.Boolean": return (bool)Convert.ChangeType(obj,bool); default: return obj.ToString(); } 但是,你的函数签名怎么写? 写成int ChangeType(object obj,Type detailType),返回不了bool类型 写成bool ChangeType(object obj,Type detailType),返回不了int类型 两个都写上去?编译器不认 写成object ChangeType(object obj,Type detailType),你返回的是object,仍然要再去转换成int或者bool 楼主,你这个问题我之前也想过,但是最后发现这个在目前无法实现[解决办法] 原因就是因为.NET是强类型语言 如javascript之类的弱类型语言,应该能实现[解决办法] 路过,呵呵[解决办法] 用动态编译肯定可以的。[解决办法] 不知道这样可不可以 static object ChangeType(object o,Type t) { if (t.Name == "Int32") return (int)o; else { return (string)o; } } 调用时 var a=ChangeType(1,typeof(int)); Console.WriteLine(a.GetType()); Console.ReadKey();[解决办法] 路过而已。[解决办法] 能力不够,专业路过!