Shared和Static有什么区别?

sab*_*669 10 c# vb.net static static-methods shared

我是一名C#开发人员,但我今天继承了一个传统的VB应用程序,其中包含0个文档.我已经开始阅读代码并每5秒引用一次VB关键字列表.

我想我不明白之间的区别SharedStatic.

阅读这篇文章:https://stackoverflow.com/a/1980293/1189566

它指出:

VB没有static,它有shared

但是你可以在上面链接的关键字列表中看到,Static是一个保留关键字.它看起来Static只适用于字段,Shared可以在方法字段上?

我想最终我只是希望有人可以扩展我链接的答案,为VB菜鸟提供更多细节.

例如,说我有这个

public class MyClass
    Dim myVar as Integer = 1

    public shared sub UpdateMyVar()
        myVar = 2
    end sub
end class

public class MyOtherClass
    Dim cOne = New MyClass()
    Dim cTwo = New MyClass()

    cOne.UpdateMyVar()
    txtMyTextBox.Text = cTwo.myVar.ToString()
end class
Run Code Online (Sandbox Code Playgroud)

请原谅任何语法问题.假设此代码编译.我已经开始在一个半小时前开始浏览代码了.

cTwo.myVar12?我猜是2因为Shared似乎影响了一个类的所有实例?这似乎非常危险.

Mat*_*lko 18

等效的C#Static 方法修饰符Shared在VB.net中

VB.Net中最接近的C#Static 修饰符是aModule

StaticVB.NET中的关键字定义了一个在进程生命周期内存在的局部变量.在C#中没有相同的东西.

有关两者之间比较的绝佳参考,请参阅此链接:https://www.harding.edu/fmccown/vbnet_csharp_comparison.html