我试图理解 C# 使用 getters 和 setters 自动声明变量与 java 声明之间的区别。
在java中我通常这样做:
private int test;
public int getTest() {
return test;
}
public void setTest(int test) {
this.test = test;
}
但是在 C# 中我尝试了这样的事情:
private int test { public get; public set};
但这根本不允许访问该变量。 所以我最终得到了这个:
public int test { get; set; }
这样我就可以从类外部访问变量测试。
我的问题是,这两者有什么区别? C# 实现公开变量是不是一个坏主意?
在 C# 中,我已将变量声明为“public”。而在java中它被声明为“私有(private)”。这有什么影响吗?
找到了一个非常好的答案(除了下面的答案)here
最佳答案
完全一样。
您在 C# 中定义的自动属性无论如何都会编译为 getter 和 setter 方法。它们被归类为“语法糖”。
这个:
public int Test { get; set; }
..编译为:
private int <>k____BackingFieldWithRandomName;
public int get_Test() {
return <>k____BackingFieldWithRandomName;
}
public void set_Test(int value) {
<>k____BackingFieldWithRandomName = value;
}
关于C# 私有(private)变量和 java 私有(private)变量 getter 和 setter - 区别?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17293202/