Операции is и as

  • docx
  • 27.11.2021
Публикация на сайте для учителей

Публикация педагогических разработок

Бесплатное участие. Свидетельство автора сразу.
Мгновенные 10 документов в портфолио.

Иконка файла материала Л2-002969.docx

 Операции is и as

Часто бывает удобно переменные разных классов записать в один список, чтобы было легче его обрабатывать. Чтобы проверить к какому классу принадлежит какой-либо объект, можно использовать оператор is: он возвращает истину, если объект принадлежит указанному классу. Пример:

 

Button b = new Button(); if (b is Button)

MessageBox.Show("Это кнопка!"); else

MessageBox.Show("Это что-то другое...");

 

Как правило, в общих списках объекты хранятся в «обезличенном» состоянии, так, чтобы у всех у них был лишь минимальный общий для всех набор методов и свойств. Для того чтобы получить доступ к рас- ширенным свойствам объекта, нужно привести его к исходному классу с помощью операции приведения as:

 

(someObject as Button).Text = "Это кнопка!";

Следует помнить, что операция приведения сработает только в том случае, если объект изначально принадлежат тому классу, к которому его пытаются привести (или совместим с ним), в противном случае опе- ратор as выбросит исключение и остановит выполнение программы. Поэтому более безопасный подход состоит в комбинированном приме- нении операторов as и is: сначала проверяем совместимость объекта и класса, и только потом выполняем операцию приведения:

 

if (someObject is Button)

(someObject as Button).Text = "Это кнопка!";

 

В качестве практического примера использования этих операций рассмотрим пример программы, которая перебирает все элементы управления на форме, и у кнопок (но не у других элементов управле- ния!) заменяет текст на пять звездочек «*****»:

 

private void Form1_Load(object sender, EventArgs e)

{

// Перебираем все элементы управления foreach (Control c in this.Controls)

if (c is Button) // Кнопка?

(c as Button).Text = "*****"; // Да!

}