0

我正在尝试围绕 Ruby 变量展开思考,并认为从 C# 的角度来看它们可能会很好

有人能告诉我 Ruby 的 C# 等价物吗(例如 @@ == 公共静态变量?):

$ 全局变量
@ 实例变量
@@ 类变量
[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 回答