2015-06-02 11 views
1

关于C#Java封装和访问者的简短问题。 在C#中的这段代码是否与下面的Java中的代码相同?封装,访问者C#vs 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#缩短。

+1

'无效int'和'无效字符串'不是有效的返回类型... –

+0

;)编写代码时,有趣的坏习惯IDE,谢谢纠正 – JimC

回答

3

不,在C#代码中你有私人设置者 - 在你的Java代码中它们是公开的。

的C#等同于Java代码将是:

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

(我已经改变了名称,以遵循.NET命名约定 - 属性PascalCased。)

+0

好吧我看到了,有点伤痕累累的声明尽管设置了公开变量 – JimC

+0

@JimC:你没有声明一个public *变量* - 只是一个public *属性*。支持领域仍然是私人的。 –

0

你可能不应该有要么是诚实的公开场合。

有一个公共增变器有什么好处?我很少看到有一个公开的增变器的理由。

+0

C#版本没有公共增变器。 – Mephy

+0

我知道。我只是做一般性发言。 Java一个人,如果他让它得到;组;在C#中匹配,那么他们都将公开,可能不应该。 – Exziled