我正试图围绕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机制是什么?
答案 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#没有“共享命名空间中的全局变量”,但静态成员变量可以通过稳定路径访问,这意味着它们可以被有效地滥用为全局变量。