Ruby,变量和它们的C#等价物

时间:2013-05-12 00:40:42

标签: c# ruby variables

我正试图围绕Ruby变量,并认为用C#来看它们可能会很好

有人可以告诉我C#等价的Ruby(例如@@ == public static variable?):

$全局变量
@实例变量
@@类变量
[a-z]局部变量
[A-Z]常数

我遗失的任何其他类型的变量?

有人还可以解释如何使用@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机制是什么?

1 个答案:

答案 0 :(得分:2)

C#不会将sigils用于变量。

“等效”C#变量完全取决于如何定义变量/成员。请注意,“等效”形式之间甚至存在差异。

但是,鼓励遵循一些naming conventions。使用的确切约定因项目而异,可能与我在下面选择的名称不同,这反映了我的惯例 - 不要在实际变量名中使用“class”或“instance”或“local”。

示例:

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#没有“共享命名空间中的全局变量”,但静态成员变量可以通过稳定路径访问,这意味着它们可以被有效地滥用为全局变量。