日期:2014-05-20  浏览次数:20742 次

出一个题目,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# code
class 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值