首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 网站开发 > asp.net >

类型转换三种情况区别

2013-09-11 
类型转换3种情况区别。(int) i , i as int 和 i.ToInt32()(DataTable) dt , dt as DataTable()为什么不提

类型转换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;
    }
}


望采纳,谢谢!

热点排行