How should I cast in VB.NET?所有这些都是平等的吗?在什么情况下我应该选择彼此而不是其他人?
编辑:来自notself&hellip的建议;
这些都略有不同,并且通常具有可接受的用法。
为了获得更好的性能,内嵌编译了 如果定义了转换运算符,则 如果无法转换,则基类型和字符串之间的 如果类型通过继承关系或共享一个公共接口,则使用 我喜欢以下语法:
哈,你知道我通常用C语言写代码。8) 我更喜欢Trycast的原因是您不必处理强制转换异常的开销。强制转换成功或变量初始化为空,并相应地进行处理。 msdn似乎表明特定类型的cxx强制转换可以提高vb.net的性能,因为它们被转换为内联代码。出于某种原因,它还建议在某些情况下使用DirectCast,而不是Ctype(文档说明存在继承关系时使用DirectCast;我相信这意味着在编译时检查强制转换的健全性,并且可以应用优化,而Ctype始终使用VB运行时。) 当我编写vb.net代码时,我使用的内容取决于我在做什么。如果这是我要丢弃的原型代码,我将使用我所键入的任何代码。如果这是我认真考虑的代码,我会尝试使用cxx强制转换。如果一个不存在,如果我有一个合理的信念,有继承关系,我使用DirectCast。如果在这种情况下,我不知道强制转换是否应该成功(例如,用户输入->整数),那么我使用Trycast来做一些比向用户抛出异常更友好的事情。 有一件事我不能动摇,我倾向于用ToString代替CSTR,但据说CSTR更快。 用户KonradRudolph在堆栈溢出问题"vb.net的隐藏特性"中主张directcast()。 根据认证检查,您应该尽可能使用convert.toxx()进行简单的转换,因为它比cxx转换优化性能。 有一次,我记得看到msdn库状态使用cstr(),因为它更快。但我不知道这是不是真的。 |