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