public T Cvr<T>(object v)
{
....
}object value1 = 10;
object value2 = 10L;long v1 = Cvr<long>(value1);
long v2 = Cvr<long>(value2); 请问该如何编写 Cvr 才能使得下面的调用正确?
注意:value1 和 value2 究竟具体是什么类型我不能确定
{
....
}object value1 = 10;
object value2 = 10L;long v1 = Cvr<long>(value1);
long v2 = Cvr<long>(value2); 请问该如何编写 Cvr 才能使得下面的调用正确?
注意:value1 和 value2 究竟具体是什么类型我不能确定
解决方案 »
- 求C#登陆QQ网站的POST,GET方法类 我有一个类,但是不会用
- 如何在打印文档中添加进一张已有的图片,并打印出来?
- 怎樣把這段代碼改為VB.NET?
- TabControl控件的简单问题,你可以解答么
- DataGridView 删除行问题 100分
- 为什么if (xelement.GetAttribute("ID").Equals(id))xelement.RemoveAll();不能完全删除某一个节点呢
- 如何锁定鼠标而不锁定键盘?
- 急!急!急! 各位大虾请帮小弟啊,我急需html2pdf的一个控件!
- C#中如何在用户控件1中调用用户控件2的方法(该方法是对用户控件2 中的控件进行操作)
- 一个很笨的问题!
- checkbox控件,如何实现checked属性,只能由 false 改为 true,反之则不行
- 求一算法
{
// 没啥好办法,我觉得你只能用 if 判断
if (typeof(T) == typeof(int))
return int.Parse(v);
...
// 如果不想异常,那么用 TryParse
}
你在声明 value1 和 value2 的时候, 就必须知道接下来你要使用的 Cvr<T> 中的 T 是什么, 因为这种强制转换成功的比率很低. 就比如你那个 object value1 = 10;, 这种声明造成了后面代码有异常.
既然你已经知道 T 是什么了, 又何必用函数, 直接 v2 = (long)value2; ...
到头来, C# 和 C++ 一样, 也是没有彻底实现不定类型的返回值.
Type type = typeof(T); switch(type.Name){
case "A":
break;
case "B":
break;
default
}
知道 T,可不知道 value2,而且 value2 是被包装过的
说 return (T)value; 的,请你试试:
object value1 = 10;
long v1 = (long)value1;是否成功
试试这个