0

Ruby の変数について頭を悩ませようとしているのですが、C# の観点から見たほうがよいのではないかと考えました。

誰かが Ruby の C# に相当するものを教えてくれませんか (例えば @@ == public static variable?):

$ グローバル変数
@ インスタンス変数
@@ クラス変数
[az] ローカル変数
[AZ] 定数

私が見逃している他のタイプの変数はありますか?

@instance 変数がどのように使用/機能されるかについても誰かが説明できますか?
最初は、クラスのインスタンスのグローバル変数だと思っていましたが、インスタンスのメソッドのローカル変数のようなスコープで使用されているのを見ました。

これは「十分に根拠のあるルビー主義者」の例です

class C
    def show_var
        @v = "i am an instance variable initialized to a string" 
        puts @v
    end
    @v = "instance variables can appear anywhere..." 
end
C.new.show_var

クラスインスタンスのどこからでも「v」を同じ変数にしたい場合、これを行うためのRubyメカニズムは何ですか?

4

1 に答える 1

2

C# は変数にシジルを使用しません。

「同等の」C# 変数は、変数/メンバーの定義方法に完全に依存します。「同等の」フォーム間でも違いがあることに注意してください。

ただし、従うことが推奨される命名規則がいくつかあります。使用される正確な規則はプロジェクトによって異なり、以下で選択した名前とは異なる場合があります。これは私の規則を反映しています。実際の変数名には「クラス」、「インスタンス」、または「ローカル」を使用しないでください。

例:

class MyClass: IMyInterface {

    // "const" makes it constant, not the name
    public const int CONSTANT = 42;

    // static member variable - somewhat like Ruby's @@variable
    private static int classVariable;
    public static int ExposedClassVariable; // but use properties  

    // @variable - unlike Ruby, can be accessed outside "self" scope
    int instanceVariable;
    public int ExposedInstanceVariable;     // but use properties

    void method (int parameter) {
        int localVariable;
    }
}

C# には「共有名前空間のグローバル変数」はありませんが、静的メンバー変数は安定したパスからアクセスできるため、グローバル変数として効果的に悪用される可能性があります。

于 2013-05-12T00:48:29.547 に答える