日期:2014-05-17  浏览次数:20543 次

类型转换3种情况区别。

(int) i , i as int 和 i.ToInt32();
(DataTable) dt , dt as DataTable();
为什么不提供ToDataTable()

什么区别,有没有好的例子?

------解决方案--------------------
可以使用 as 运算符执行转换的某些类型在兼容之间的引用类型或 可以为 null 的类型。
(int)i,强制转换,值类型。
http://msdn.microsoft.com/zh-cn/library/cscsdfbt.aspx
------解决方案--------------------
引用:
 i as int 

这么写不可以吧。


当然不可以。as只能用于引用类型和可为空的类型。可以 i as int?
另外不是很明白楼主 i.ToInt32()这种写法
只用过Convert.ToInt32(),并且Convert只适用于简单数据类型
------解决方案--------------------
第一种:(int)i 显示转换,转换失败时会抛出异常;
第二种: i as int 至少目前不存在这种写法,因为 as运算符要求目标类型是可空类型;
第三种: i.ToInt32() 这个ToInt32() 方法是一个扩展方法,至少目前不存在于.Net框架集内。
关于为什么不提供ToDataTable(),知道了第三种的原因,这个也就不难理解了,你可以自己写扩展方法,大概如下:

public static class DataTableExtension
{
    public static DataTable ToDataTable(this object dt)
    {
        return dt as DataTable;
    }
}


望采纳,谢谢!