Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/vb.net/15.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
将vb6应用程序移植到VS2008 vb.net-使编译器标志统一化形式';s私有变量作为错误_Vb.net_Compiler Construction - Fatal编程技术网

将vb6应用程序移植到VS2008 vb.net-使编译器标志统一化形式';s私有变量作为错误

将vb6应用程序移植到VS2008 vb.net-使编译器标志统一化形式';s私有变量作为错误,vb.net,compiler-construction,Vb.net,Compiler Construction,我可以让编译器给我一个错误(赋值前使用变量),错误如下: 但不包括: Friend Class frmReceiving ... Private mobjOrder As Order ... private sub Testing() Dim ord2 As Order ord2 = mobjOrder end sub 如何将其标记为错误 谢谢。是的 使用/warnaserror编译器选项 您的第二个示例不是错误mobjOrder将被初始化为Nothing。然后将Noth

我可以让编译器给我一个错误(赋值前使用变量),错误如下:

但不包括:

Friend Class frmReceiving
...

Private mobjOrder As Order 

...

private sub Testing()
   Dim ord2 As Order
   ord2 = mobjOrder 
end sub
如何将其标记为错误

谢谢。

是的

使用/warnaserror编译器选项


您的第二个示例不是错误
mobjOrder
将被初始化为
Nothing
。然后将
Nothing
分配给
ord2
。这是完全合理的做法。

这两个例子有什么区别。为什么mobjOrder被初始化为零,但在第一个例子中不是ord?在第一个例子中,它是一个局部变量。在第二个例子中,它是一个实例变量。这两个赋值没有区别,这两个对象是“无”的,只是编译器无法知道私有类成员对象在赋值语句之前是否已在其他地方初始化(尽管我希望它能够分析使用它的所有位置并确定是否已初始化),而在这个方法中,它知道局部变量是单位化的。当然,同样的论点也适用于第一个例子
ord
将被初始化为
Nothing
&将
Nothing
分配给
ord2
是合法的。只是编译器检测到它并警告您,因为它可能是一个错误。正如bmutch所说,区别在于创建一个静态分析器来帮助您处理第二种情况要困难得多。@MarkJ:我不知道VB有多详细,但在C#中,
ord
不会初始化为
null
。这只是一个编译器错误。
Friend Class frmReceiving
...

Private mobjOrder As Order 

...

private sub Testing()
   Dim ord2 As Order
   ord2 = mobjOrder 
end sub