简体   繁体   English

得到; 放; 与得到; 私有集;

[英]get; set; vs get; private set;

I am just wondering, functionally, what is the difference between:我只是想知道,在功能上,两者之间有什么区别:

private int var {get; set;}

and

public int var {get; private set;}

Also, why does还有,为什么

private int var {get; set;}

return an error?返回错误?

I am new to using getters and setters.我不熟悉使用 getter 和 setter。

The main difference between the two is that两者之间的主要区别在于

private int var {get; set;}

will not allow other classes to access and modify the value of var, while不允许其他类访问和修改var的值,而

public int var {get; private set;}

will only allow other classes to access the value of var, but not modify it.将只允许其他类访问 var 的值,而不能修改它。

The reason why之所以

private int var {get; set;}

returns an error is because you are trying to set the value of var to a private field.返回错误是因为您试图将 var 的值设置为私有字段。 In order to set the value of var, you need to use the public setter.为了设置var的值,你需要使用public setter。

public int var { get; set; } public int var { get; set; } is like: public int var { get; set; }

public class Var {
    private int var;

    public int Get() { return var; }
    public void Set(int var) { this.var = var; }
}

if you define public int var { get; private set; }如果你定义public int var { get; private set; } public int var { get; private set; } public int var { get; private set; } , it will be like: ,它会public int var { get; private set; }

public class Var {
    private int var;

    public int Get() { return var; }
    private void Set(int var) { this.var = var; }
}

So getter and setter is like call Get() or Set() function when you get or set var :所以 getter 和 setter 就像在获取或设置var时调用Get()Set() function:

Var v = new Var();

// like v.Set(1);
// if Set() is private, it will returns error.
v.var = 1;

// like Console.log(v.Get());
Console.log(v.var);

It just a analogy, maybe you could see about properties document to know more.这只是一个类比,也许您可以查看有关属性的文档以了解更多信息。

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM