gpt4 book ai didi

vb.net - VB.NET 中 DirectCast() 和 CType() 之间的区别

转载 作者:行者123 更新时间:2023-12-03 04:51:43 25 4
gpt4 key购买 nike

我是一位经验丰富的 C/C++/C# 程序员,刚刚接触 VB.NET。我通常使用 CType(以及 CInt、CBool​​、CStr)进行强制转换,因为它的字符较少,并且是我接触到的第一种强制转换方式,但我也知道 DirectCast 和 TryCast。

简单来说,DirectCast 和 CType 之间有什么区别( Actor 效果、性能等)吗?我理解 TryCast 的想法。

最佳答案

首先要注意的是 VB.NET 没有直接模拟 C# 的 (type)instance 转换机制。我提出这一点是因为它可以作为比较两个 VB.NET 运算符的起点和通用引用(它们是运算符,而不是函数,即使它们具有函数语义)。

DirectCast() 比 C# 转换运算符更严格。仅当正在转换的项目已经是您要转换到的类型时,它才允许您进行转换。我相信它仍然会取消装箱值类型,但否则它不会进行任何转换。例如,您无法像 C# (int) 转换那样从 short 转换为 int。但是,如果您的基础 IEnumerable 对象变量确实是 Array,则可以从 IEnumerable 转换为数组。当然,您可以从 Object 转换为任何内容,假设您的对象实例的类型确实位于继承树中的转换类型下方。

这是可取的,因为它更快。需要进行的转换和类型检查较少。

CType() 不如 C# 转换运算符严格。它可以完成简单 (int) 风格转换无法完成的事情,例如将字符串转换为整数。它的功能与在 C# 中调用 Convert.To___() 一样强大,其中 ___ 是转换的目标类型。

这是理想的,因为它非常强大。然而,这种能力是以性能为代价的。它不如 DirectCast() 或 C# 的强制转换运算符快,因为它可能需要做大量工作才能完成强制转换。一般来说,如果可以的话,您应该更喜欢 DirectCast()

最后,您错过了一个转换运算符:TryCast(),它是 C# 的 as 运算符的直接模拟。

关于vb.net - VB.NET 中 DirectCast() 和 CType() 之间的区别,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3056514/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com