2012-01-25 13 views
4

VB.NETのStaticキーワードには、特にJavaに相当するものがありますか? VB.NETに精通したものではないために、次のコードスニペットを取る...[Android] JavaのVB.NETの静的キーワードに相当するものは何ですか?

Sub MyFunc() 
    Static myvar As Integer = 0 
    myvar += 1 
End Sub 

Staticキーワードは、それはそうMYVARがMyFuncとの後続の呼び出しの間その値を保持できます。

したがって、MyFuncを3回呼び出すごとに、myvarの値は1,2および3になります。

Javaのメソッド内でクロスコール永続変数を作成するにはどうすればよいですか?あなたはできる?

+1

Javaはまた、「静的」キーワードを持っており、それは私が集まって何から同じ目的 – Waqas

+1

を果たす、Javaの 'static'はVB.NETの' Shared'にもっと似ている...示しますクラスメンバが特定のクラスインスタンスを必要としないこと。いいえ?あるいは、Javaの 'static'は実際にVB.NETの' Shared'と 'Static'両方の二重の目的を果たしますか?静的として宣言されたjava/c#メンバーの – eidylon

+0

は、インスタンスをインスタンス化せずに使用することもできます。また、インスタンス間で共有し、後続の呼び出し間で値を保持します。 – Waqas

答えて

4

メソッド内で番号でstaticキーワードで、Javaは様々な呼び出しにわたって覚えておくことができる何かを持っていません。

メソッドの複数の呼び出しで値を保持したい場合は、インスタンス変数またはクラス変数として保存する必要があります。

インスタンス変数はオブジェクト/インスタンスごとに異なりますが、クラス変数(または静的変数)はそのクラスのすべてのオブジェクトで同じです。例えば

class ABC 
{ 
    int instance_var; // instance variable 
    static int static_var; // class variable 
} 

class ABC_Invoker 
{ 
    public static void main(string[] args) 
    { 
     ABC obj1 = new ABC(); 
     ABC obj2 = new ABC(); 

     obj1.instance_var = 10; 
     obj2.instance_var = 20; 

     ABC.static_var = 50; // See, you access static member by it's class name 

     System.out.prinln(obj1.instance_var); 
     System.out.prinln(obj2.instance_var); 
     System.out.prinln(ABC.static_var); 
     System.out.prinln(obj1.static_var); // Wrong way, but try it 
     System.out.prinln(obj2.static_var); // Wrong way, but try it 
    } 
} 
+0

私はメソッドの外に変数を移動し、それをクラスレベルに置く必要があります、はい?次に、私のメソッドと私の変数を 'static'と宣言することができます。それは最も近いものでしょうか? – eidylon

+2

はい、クラスレベルで変数を移動する必要があります。方法は「静的」である必要はない。非静的メソッドは 'static'変数にアクセスできます。他の方法でも値が1つの方法で変更されたことを確認できることを忘れないでください。 – Azodious

-1

これは、Java

public static String mVar = "Some Value"; 
+0

いいえ、そうではありません。問題は**ローカル変数に 'static'を使うことです** – MarkJ

+0

Javaで利用できるとは思わない –

+1

答えが間違っており、Azodiusの答えが正しいです。私があなただったら私はこの答えを削除します。 – MarkJ

関連する問題