封装,访问器 C# vs Java

encapsulation, accessor C# vs Java

关于 C#Java 中的封装和访问器的快速问题。 C# 中的这段代码是否等同于下面 Java 中的代码?

C#:

class MyClass{

    public string var1 {get; private set;}
    public int var2 {get; private set;}

    public MyClass(string aString, int anInt){
        this.var1= aString;
        this.var2=anInt;
    }

}

java

//Java
class MyClass{

    private String var1;
    private int var2;

    public MyClass(String aString, int anInt){
        this.var1= aString;
        this.var2=anInt;
    }

    public String getVar1(){
        return this.var1;
    }

    public void setVar1(int anInt){
         this.var1 = anInt;
    }

    public int getVar2(){
        return this.var2;
    }

    public void setVar2(String aString){
         this.var2 = aString;
    }

}

我来自 java 世界,不确定 C# 中的访问器缩短。

不,在 C# 代码中您有私有设置器 - 在您的 Java 代码中它们是 public.

与 Java 代码等效的 C# 代码为:

public string Var1 { get; set; }
public int Var2 { get; set; }

(我更改了名称以遵循 .NET 命名约定 - 属性是 PascalCased。)

老实说,您可能不应该在两者中设置 public 字段。

public 突变器有什么好处?我很少看到有理由使用 public 突变器。