.net MSDN文档错误&引用;如果该过程是共享的,则其所有局部变量将自动共享。这包括静态变量。”;
我正在查看有关VB.Net很少使用的局部变量关键字的MSDN文档。我的问题是而不是关于静态是如何工作的(我个人计划避免使用它,因为它似乎会给没有注意到副作用的未来程序员带来悲伤。)我的问题是关于文档中的这句话: 任何局部变量的行为取决于是否声明它 在共享过程中。如果该过程是共享的,则其所有本地 变量会自动共享。这包括静态 变量。对于整个系统,只有这样一个变量的一个副本 应用程序。 这似乎意味着共享子系统中的所有局部变量的行为都类似于静态变量——它们将在不同的调用中保持其值。但我知道事实并非如此,我编写了一个小测试程序来证明这一点:.net MSDN文档错误&引用;如果该过程是共享的,则其所有局部变量将自动共享。这包括静态变量。”;,.net,vb.net,msdn,.net,Vb.net,Msdn,我正在查看有关VB.Net很少使用的局部变量关键字的MSDN文档。我的问题是而不是关于静态是如何工作的(我个人计划避免使用它,因为它似乎会给没有注意到副作用的未来程序员带来悲伤。)我的问题是关于文档中的这句话: 任何局部变量的行为取决于是否声明它 在共享过程中。如果该过程是共享的,则其所有本地 变量会自动共享。这包括静态 变量。对于整个系统,只有这样一个变量的一个副本 应用程序。 这似乎意味着共享子系统中的所有局部变量的行为都类似于静态变量——它们将在不同的调用中保持其值。但我知道事实并非如此,
Class TestSharedSub
Shared Sub Main()
Test()
Test()
Test()
Console.Write("Press any key to continue...") : Console.ReadKey()
' Output:
' 1, 1
' 2, 1
' 3, 1
End Sub
Shared Sub Test()
Dim iNormal As Integer
Static iStatic As Integer
iNormal += 1
iStatic += 1
Console.WriteLine(iStatic & ", " & iNormal)
End Sub
End Class
那么,有人能以一种有意义的方式为我解释上述陈述吗?或者这是文档中的一个bug?它从VS2005版本的文档开始就存在了,现在仍然存在于VisualStudio11版本中。不,这是胡说八道。在下一段中,它继续被完全破坏: 如果过程未共享,则其局部变量为实例变量 局部变量不是实例变量 无论是谁写的这个页面似乎根本不理解局部变量。天知道他们会如何处理递归。请注意,这是一个合理的开始: 通常,程序中的局部变量在程序停止后立即停止存在 。。。但这一说法显然与后来的说法相矛盾。唉
我建议您在上提交一个bug。该特定文档是错误的。在
共享
方法中声明的局部变量与在非共享方法中声明的局部变量没有区别。局部变量的唯一行为差异在于它们是通过Static
修饰符声明的
我会通知相关团队
编辑
负责文档编制的团队已收到通知,并将在不久的将来更正文档 太好了,谢谢你,杰瑞德!我把答案给了乔恩,因为他比你早几分钟就进来了。但我很感谢你为我说的话。我想我还是会在Connect上提交一份bug报告,尽管这样才能让事情顺利进行:@JordanRieger我会用我找到的任何其他信息编辑我的答案。他们已经更新了VS 2012和2012的文档,但没有更新2008或2005的文档。我在Connect bug报告上发表了另一条评论,要求他们也修复2008年和2005年的文档。