Статья Автор: Деникина Н.В., Деникин А.В.

Анатомия C#-метода

ASP.NET Web Forms · Методы и параметрыЗанятие 2
SilverTests.ru · УчебникАнатомия C#-метода
Анатомия C#-метода

Разбираем protected void BtnHello_Click(object sender, EventArgs e)


0Зачем разбирать эту строку

На прошлом занятии мы написали обработчик кнопки:

1protected void BtnHello_Click(object sender, EventArgs e)
2{
3 lblResult.Text = "Привет, " + txtName.Text + "!";
4}

Каждое слово в первой строке имеет точный смысл. Разберём все части.


1Интерактивный разбор

Нажми на любую часть — ниже появится пояснение:

protected void BtnHello_Click(object sender, EventArgs e)
нажми на любую часть строки

2protected — модификатор доступа

Определяет, кто может вызвать метод.

Аналогия. public — входная дверь, для всех. private — личная комната. protected — семейная: ты и наследники.

Наш класс DefaultPage наследуется от Page. ASP.NET вызывает метод изнутри этой «семьи», поэтому protected.

Модификатор Кто видит Когда
public Все классы API, утилиты
private Только этот класс Вспомогательные методы
protected Класс + наследники Обработчики ASP.NET

3void — тип возврата

void = «ничего не возвращает». Метод делает работу, но не отдаёт результат.

Аналогия. «Убери на кухне» — повар сделает, но ничего не принесёт (void). «Приготовь суп» — вернёт тарелку (string, int).
void ShowMessage()
{
lblResult.Text = "Привет!";
// нет return
}
int Add(int a, int b)
{
return a + b;
// вернёт число
}

Обработчики событий ASP.NET всегда void — их работа изменить элементы страницы, а не вернуть значение.


4BtnHello_Click — имя метода

Имя придумываем сами, но оно должно совпадать с OnClick в .aspx:

<!-- .aspx -->
<asp:Button OnClick="BtnHello_Click" ... />
Соглашение: ИмяЭлемента_Событие. Примеры: BtnSave_Click, TxtSearch_TextChanged, DdlCity_SelectedIndexChanged.

5object sender — кто вызвал

sender — ссылка на элемент, вызвавший событие. Тип object — самый общий в C#, потому что событие может прийти от любого элемента.

Аналогия. Звонок в дверь. sender — тот, кто за дверью: курьер, сосед, друг.

Приведение к конкретному типу:

1protected void AnyButton_Click(object sender, EventArgs e)
2{
3 Button btn = (Button)sender; // object → Button
4 lblResult.Text = "Нажата: " + btn.Text;
5}

стр 3(Button)sender превращает object в Button. После этого доступны свойства: Text, ID, Enabled.

Симуляция: sender в действии

Три кнопки, один обработчик:

 

6EventArgs e — подробности события

EventArgs — дополнительная информация о событии. e — от «event».

Аналогия. sender — кто пригласил на концерт. e — билет с деталями. Для кнопки пустой, для других событий — полный.
Событие Тип Содержимое
Нажатие кнопки EventArgs Пусто
Выбор строки GridView GridViewSelectEventArgs Номер строки
Команда CommandEventArgs CommandName, Argument
Важно: даже пустой e убрать нельзя. ASP.NET требует ровно два параметра — это контракт.

7Как ASP.NET вызывает метод
Кликпользователь
POSTформа + ViewState
ASP.NETчитает OnClick
BtnHello_Clicksender=кнопка
// Примерно так ASP.NET вызывает метод:
Button clicked = FindControl("btnHello");
BtnHello_Click(clicked, EventArgs.Empty);
// ↑ sender ↑ e

Мы не вызываем метод вручную — за нас это делает фреймворк.


8Параметры в обычных методах
Аналогия. Метод — рецепт. Параметры — ингредиенты. «Хлеб + сыр» и «хлеб + колбаса» — разные бутерброды по одному рецепту.
Без параметров
void SayHello() { lblResult.Text = "Привет!"; }
Один параметр
void SayHelloTo(string name)
{
lblResult.Text = "Привет, " + name + "!";
}
SayHelloTo("Маша"); // → Привет, Маша!
Два параметра + возврат
int Multiply(int a, int b) { return a * b; }
int answer = Multiply(4, 7); // 28

Вместо void стоит int — метод возвращает число. Обязателен return.


9Полный пример: форма оценки

Два метода: обработчик (стандарт ASP.NET) и вспомогательный (свои параметры).

1// Обработчик — стандартная сигнатура ASP.NET
2protected void BtnCheck_Click(object sender, EventArgs e)
3{
4 bool ok = int.TryParse(txtGrade.Text, out int grade);
5 if (!ok || grade < 1 || grade > 5)
6 {
7 lblResult.Text = "Ошибка! Число от 1 до 5.";
8 return; // выход из void-метода
9 }
10 lblResult.Text = "Оценка " + grade + ": " + GetEmoji(grade);
11}
12
13// Вспомогательный — свои параметры и возврат
14private string GetEmoji(int grade)
15{
16 if (grade == 5) return "Отлично!";
17 if (grade == 4) return "Хорошо";
18 if (grade == 3) return "Нормально";
19 if (grade == 2) return "Плоховато...";
20 return "Катастрофа!";
21}

стр 2protected void + два параметра = стандарт ASP.NET.

стр 8return в void-методе = выход без значения.

стр 14private string + int grade = вспомогательный, возвращает строку.


10Шпаргалка
КТО ВИДИТ ЧТО ВЕРНЁТ ИМЯ(ТИП имя, ...)
 
protected void BtnClick(object sender, EventArgs e) ← обработчик
private string GetEmoji(int grade) ← вспомогательный
public int Add(int a, int b) ← публичный

Итоги

protected — видимость для наследников. void — нет возврата. Имя метода совпадает с OnClick. object sender — элемент-источник (можно привести к типу). EventArgs e — информация о событии (для кнопки пустая, убрать нельзя). Обработчики ASP.NET всегда: protected void Имя(object, EventArgs). Свои методы — любые параметры и типы.

Следующее занятие: база данных, GridView и SQL-запросы.

© SilverTests.ru · ASP.NET Web Forms · Занятие 2
Печать