我正在新继承的VB.NET应用程序中的所有项目上启用Option Strict。我主要添加了很多CStr,CBool,CType语句来摆脱所有的编译错误。
Dim x As String = someObject
dim val As SomeEnumType = 1
变为
Dim x As String = CStr(someObject) ' Not .ToString() because someObject could be Nothing
Dim val As SomeEnumType = CType(1, SomeEnumType)
等
我一次只手动做一件事,并且有一个测试应用程序来测试Nothing,... bordercases。
但是有可能我错过了一些会在运行时产生异常的东西吗? 由于Option Strict会生成什么样的代码?是仅仅添加了一些转换,还是OptionStrict还会做其他事情?
答案 0 :(得分:2)
Option Strict On 不生成任何额外代码,它只是告诉编译器在vb.net语句依赖隐式类型转换时生成错误。就像将对象分配给字符串一样。您在代码段中编写的内容正是编译器对Option Strict Off执行的操作,因此类型转换运算符不会生成额外的代码。
但是,当然,使用错误的转换并破坏现有代码总是存在非零的可能性。当您对代码进行更改时,您将不得不执行所需的操作,您必须重新测试它。
答案 1 :(得分:1)
Google是你的朋友!
MSDN文档也是如此:http://support.microsoft.com/kb/311329