Мне просто интересно, функционально, в чем разница между:
private int var {get; set;}
и
public int var {get; private set;}
Кроме того, почему
private int var {get; set;}
вернуть ошибку?
Я новичок в использовании геттеров и сеттеров.





Основное различие между ними заключается в том, что
private int var {get; set;}
не позволит другим классам получить доступ и изменить значение var, в то время как
public int var {get; private set;}
позволит другим классам только получить доступ к значению var, но не изменить его.
Причина по которой
private int var {get; set;}
возвращает ошибку, потому что вы пытаетесь установить значение var в приватное поле. Чтобы установить значение var, вам нужно использовать публичный сеттер.
Вы ошиблись в первом. private int var {get; set;} не позволяет другим классам получить к нему доступ.
@Enigmativity Небольшая опечатка, исправлена
public int var { get; set; } это как:
public class Var {
private int var;
public int Get() { return var; }
public void Set(int var) { this.var = var; }
}
если вы определите 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; }
}
Таким образом, геттер и сеттер похожи на вызов функции Get() или Set(), когда вы получаете или устанавливаете var:
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);
Это просто аналогия, возможно, вы могли бы увидеть документ свойств, чтобы узнать больше.
private int var {get; set;}не возвращает ошибку для меня. Можете ли вы предоставить код, который показывает ошибку?