封装,访问器 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 突变器。
关于 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 突变器。