私はC#開発者ですが、レガシーVBアプリを今日継承しており、ドキュメントはこれまでにありません。コードを読み始め、 リストof VBキーワード 5秒ごと。
Shared
とStatic
の違いがわからないと思います。
この投稿を読む: https://stackoverflow.com/a/1980293/1189566
それは述べています:
VBには
static
がなく、shared
があります
ただし、上記のリンク先のキーワードのリストを見ると、Static
は予約済みのキーワードです。 Static
はフィールドにのみ適用できるようですが、Shared
はメソッドまたはフィールドにありますか?
最終的には、リンクした回答を誰かが拡張して、VB noobの詳細を提供できることを望んでいると思います。
たとえば、私がこれを持っていたと言う
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
構文上の問題はご容赦ください。このコードがコンパイルされると仮定します。私は文字通り1時間半前にコードをスキミングし始めました。
cTwo.myVar
be 1
または2
?私は推測しています2
Shared
はクラスのすべてのインスタンスに影響を与えるように見えるので?それは非常に危険なようです。
C#Static
method修飾子に相当するものは、VB.netのShared
です。
VB.NetのC#Static
class修飾子に最も近いものはModule
です。
VB.NETのStatic
キーワードは、プロセスの存続期間中に存在するローカル変数を定義します。 C#にはこれに相当するものはありません。
2つの比較の優れたリファレンスについては、次のリンクを参照してください: https://www.harding.edu/fmccown/vbnet_csharp_comparison.html
VB.Netの場合、StaticがC#で使用されるのとまったく同じように共有を使用しますが、VB.Netにもstaticキーワードがあり、メソッド呼び出しが終了した後でも変数値を保持するために使用されます。したがって、次にメソッドを呼び出すと、その前の値が使用されます。 MSDNの詳細な説明はここにあります- http://msdn.Microsoft.com/en-us/library/z2cty7t8.aspx
リンクから、いくつかの興味深い動作があります。
Sharedプロシージャで静的変数を宣言すると、アプリケーション全体で使用できる静的変数のコピーは1つだけになります。共有プロシージャは、クラスのインスタンスを指す変数ではなく、クラス名を使用して呼び出します。
Sharedではないプロシージャで静的変数を宣言すると、クラスのインスタンスごとに変数のコピーを1つだけ使用できます。クラスの特定のインスタンスを指す変数を使用して、非共有プロシージャを呼び出します。