Почему во многих случаях я вижу, что кодер определяет ссылку объекта на уровне класса, тогда он создает объект сам (присваивает ему значение) в конструкторе??
public partial class Form1 : Form
{
Graphics grfx;
public Form1()
{
InitializeComponent();
grfx = this.CreateGraphics();
}
}
В чем преимущества этого. Это позволяет нам получить доступ к этому объекту из любого метода в классе?
grfx
- это переменная экземпляра Form1
. Он определяется на уровне класса (т.е. вне любого метода или конструктора), поэтому все нестатические методы класса могут получить к нему доступ.
Одно из преимуществ инициализации его в конструкторе состоит в том, что остальная часть кода может полагаться на его установку, избегая ненужных проверок null
. В этом случае, вероятно, неплохо сделать grfx
частным и доступным только для чтения, чтобы гарантировать, что он никогда не устанавливается вне конструктора:
private readonly Graphics grfx;
grfx
имел это значение при создании объекта типаForm1
.