Определение ссылки на объект на уровне класса и присвоение значения в конструкторе

1

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

public partial class Form1 : Form
{
    Graphics grfx;

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

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

  • 0
    Потому что человек хочет, чтобы grfx имел это значение при создании объекта типа Form1 .
  • 1
    Да, вы правильно поняли.
Теги:
oop

1 ответ

3
Лучший ответ

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

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

private readonly Graphics grfx;

Ещё вопросы

Сообщество Overcoder
Наверх
Меню