C# programming

  • 21 нояб. 2012 г.
  • 1433 Слова
C# для Windows
Урок 1. Первая программа под Windows
Ну, хватит нам программировать консольные приложения. Пора и что-нибудь поинтересней сделать. Поинтересней значит в данном случае под Windows. Наша программа будет делить два числа, которые пользователь введет в двух TextBox'ох. Результат будет показываться в label'е.
Запустите Visual Studio, создайте новый проект. Тип проекта выберите VisualC#, в качестве шаблона возьмите Windows Application:
[pic]
Нажмите на OK. Разместите на форме 2 TextBox'а, label и кнопку. Форма будет выглядеть приблизительно так:
[pic]
Из косметических изменений установите свойство Text для наших двух TextBox'ов в пустую строку. Сделайте на кнопке двойной щелчок для создания заготовки для кода. Внесите в нее следующие строки:
private voidbutton1_Click(object sender, System.EventArgs e)
{
int result =
Convert.ToInt32(textBox1.Text)/Convert.ToInt32(textBox2.Text);
label1.Text=result.ToString();
}
Код, в общем-то, не сложный, хотя без конвертации типов не обошлось. Это мы делаем в выражениях типа
...
Convert.ToInt32(textBox1.Text)
...
Результатом такого выражения будет превращение строки типа "23" в число 23.
После того, какмы разделили одно число на другое, результат надо опять превратить в строку. Делаем мы это с помощью метода .ToString():
...
label1.Text=result.ToString();
...
А вот примерный результат программы:
[pic]
Все вроде хорошо, но ведь обязательно найдется пользователь, котрый захочет разделить на ноль. Как-то эту ситуацию надо предусмотреть.

C# для Windows
Урок 2. Перехватываем ошибки

Напрошлом уроке мы с вами написали первую программу для Windows на C#. У нее было много недостатков, в частности, не была предусмотрена ситуация, когда пользователь попытается разделить на ноль. Также не было предусмотрено, если пользователь вообще попытается ввести не число, а, скажем, буквы.
Вот этим мы сейчас и займемся.
Для обработки ошибок в C# предусмотрен так называемый механизм исключений.Самое важное, что пока надо понять - это то, что исключения являются экземплярами классов. Все классы для исключений являются потомками класса System.Exception (либо класс исключения совпадает с самим классом System.Exception).
Раз исключения - это классы, то у них есть методы и свойства.
Исключения бывают как предопределенные (т. е. соответствующие классы уже существуют в системе .NET-классов), таки заданные программистом (в этом случае программист должен объявить собственные, производные от System.Exception классы).
Давайте изменим текст программы прошлого урока так, чтобы программы не вылетала с ошибкой, когда мы делим на ноль или вообще вводим не число. Вот текст нового обработчика щелчка на кнопке:
private void button1_Click(object sender, System.EventArgs e)
{int result=0;
// Пытаемся произвести деление.
try
{
result =
Convert.ToInt32(textBox1.Text)/Convert.ToInt32(textBox2.Text);
label1.Text=result.ToString();
}
// Обрабатываем деление на ноль.
catch(DivideByZeroException ex)
{label1.Text = ex.Message;
}
// Обрабатываем отальные ошибки.
catch
{
label1.Text = "Неизвестная ошибка!";
}
}
Как вы видите, мы заключаем потенциально опасную операцию в блок try:
// Пытаемся произвести деление.
try
{
...
}
Заключение в такойблок означает, что возникшую в нем ошибку мы сможем ниже обработать.
После блока try может идти один или несколько блоков catch. Каждый catch обслуживает свой вид исключения, которое указывается в скобках после catch. Если после catch в круглых скобках ничего не указать, то это будет обработчик по умолчанию (т. е. если исключение не было обработано одним из предыдущих обработчиков, то оно...
tracking img