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}
стр 2 — protected void + два параметра = стандарт ASP.NET.
стр 8 — return в void-методе = выход без значения.
стр 14 — private 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-запросы.