C# 私有(private)变量和 java 私有(private)变量 getter 和 setter - 区别?

标签 c# java getter-setter

我试图理解 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/

相关文章:

Java - 在 getter 方法中克隆属性

c# - 如何存储 Switch 语句中的 Cases 列表?

c# - 防止在测量阶段调用 ApplyTemplate()

java - 如何将 jasper 预览添加到 JPanel 中

java - 西提 CEP : Multiple results per group when using time window

java - 这些静态 getter 和 setter 方法有什么问题 - Android?

java - 如何将 Intellij 配置为自定义代码生成位置?

C# 套接字 : connect to server through proxy server

c# - 20 位整数数学

java - Alfresco activi 5.* 或 6.* 中的自定义 Rest API