加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 大数据 > 正文

vb.net – 使用DirectCast,CType,TryCast来投射DataTypes

发布时间:2020-12-16 22:35:45 所属栏目:大数据 来源:网络整理
导读:自从我在2005年从VB6迁移到VB.NET以来,我一直在使用CType从一种数据类型到另一种数据类型。我这样做,因为它只是更快的类型,用于存在于VB6,我不知道为什么我必须使用DirectCast,如果它们之间显然没有区别。 我使用TryCast一段时间,因为我明白,有时铸造
自从我在2005年从VB6迁移到VB.NET以来,我一直在使用CType从一种数据类型到另一种数据类型。我这样做,因为它只是更快的类型,用于存在于VB6,我不知道为什么我必须使用DirectCast,如果它们之间显然没有区别。

我使用TryCast一段时间,因为我明白,有时铸造可能失败。然而我不能得到CType和DirectCast之间的区别。

任何人都可以告诉我在简单的英语中有什么区别两个区别(CType和DirectCast)?添加在哪里使用的例子将是有益的。

谢谢。

TryCast和DirectCast是直接映射到CLR支持的转换操作符。它们可以快速将基本类型的对象转换为派生类型或取消类型值类型的值。 DirectCast在不可能转换时抛出异常,TryCast如果失败则返回Nothing。你通常希望DirectCast捕获编程错误。

CType允许转换的超集,CLR皱眉的。我可以想到的最好的例子是将字符串转换为数字或日期。例如:

Dim obj As Object
obj = "4/1/2010"
Dim dt As DateTime = CType(obj,DateTime)

如果选项严格打开有效,您必须使用。如果它是关闭,那么你可以直接做:

Option Strict Off
...
    Dim dt As DateTime = obj

非常方便,当然和VB.NET的一部分作为一种动态类型语言。但不是没有问题,那个日期是独角兽日在stackoverflow.com但将是一天在一月英国人进入字符串。意外的转换是CLR不允许这些直接的原因。显式,从来没有惊喜的转换看起来像这样:

Dim dt As DateTime = DateTime.Parse(obj.ToString(),_
    System.Globalization.CultureInfo.GetCultureInfo("en-US").DateTimeFormat)

是否应该购买Try / DirectCast vs CType vs显式转换是一个个人选择。如果你现在编程与Option Strict On,那么你应该肯定开始使用Try / DirectCast。如果你喜欢VB.NET语言,因为你喜欢动态类型的方便,那么不要犹豫保持在CType。

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读