2014-11-02 2 views
1

Почему во многих случаях я вижу, что кодер определяет ссылку объекта на уровне класса, тогда он создает объект сам (присваивает его значение) в конструктор ??Определение ссылки объекта на уровне класса и определение значения в конструкторе

public partial class Form1 : Form 
{ 
    Graphics grfx; 

    public Form1() 
    { 
     InitializeComponent(); 
     grfx = this.CreateGraphics(); 
    } 
} 

В чем преимущества этого. Это позволяет нам получить доступ к этому объекту из любого метода в классе?

+0

Поскольку человек хочет 'grfx' иметь то значение, когда объект Тип 'Form1' построен. – 0x499602D2

+1

Да, вы поняли это правильно. – TaW

ответ

3

grfx - это переменная экземпляра Form1. Он определяется на уровне класса (т. Е. Вне любого метода или конструктора), поэтому все нестатические методы класса могут получить к нему доступ.

Одним из преимуществ его инициализации в конструкторе является то, что остальная часть кода может полагаться на его установку, избегая ненужных проверок null. В данном случае это, вероятно, хорошая идея, чтобы сделать grfx приватным и только для чтения, чтобы убедиться, что он никогда не устанавливается за пределами конструкторы:

private readonly Graphics grfx; 
Смежные вопросы