Чтение онлайн

на главную - закладки

Жанры

C# 4.0 полное руководство - 2011

Шилдт Герберт

Шрифт:

// Применить оператор goto в операторе switch.

using System;

class SwitchGoto { static void Main {

for(int i=l; i < 5; i++) {

switch(i) { '

case 1:

Console.WriteLine("В ветви case 1"); goto case 3; case 2:

Console.WriteLine("В ветви case 2"); goto case 1; case 3:

Console.WriteLine("В ветви case 3"); goto default; default:

Console.WriteLine("В ветви default"); break;

}

Console.WriteLine;

}

// goto case 1; //

Ошибка! Безусловный переход к оператору switch недопустим.

}

}

Вот к какому результату приводит выполнение этой программы.

В ветви case 1 В ветви case 3 В ветви default

В ветви case 2 В ветви case 1 В ветви case 3 В ветви default

В ветви case 3 В ветви default

В ветви default

Обратите внимание на то, как оператор goto используется в операторе switch для перехода к другим его ветвям case или к ветви default. Обратите также внимание на то, что ветви case не оканчиваются оператором break. Благодаря тому что оператор goto препятствует последовательному переходу от одной ветви case к другой, упоминавшееся ранее правило недопущения "провалов" не нарушается, а следовательно, необходимость в применении оператора break в данном случае отпадает. Но как пояснялось выше, оператор goto нельзя использовать как внешнее средство для безусловного перехода к оператору switch. Так, если удалить символы комментария в начале следующей строки:

// goto case 1; // Ошибка! Безусловный переход к оператору switch недопустим.

приведенная выше программа не будет скомпилирована. Откровенно говоря, применение оператора goto в операторе switch, в общем, не рекомендуется как стиль программирования, хотя в ряде особых случаев это может принести^определенную пользу.

Ниже приведен один из полезных примеров применения оператора goto для выхода из глубоко вложенной части программы.

// Продемонстрировать практическое применение оператора goto.

using System;

class Use_goto {

static void Main { int i=0, j=0, k=0;

for(i=0; i < 10; i++) {

for(j=0; j < 10; j++ ) { for(k=0; k < 10; k++) {

Console.WriteLine ("i, j, k: " + i + " " + j +

" " + k) ; if(k == 3) goto stop;

}

}

}

stop:

Console.WriteLine("Остановлено! i, j, k: " + i + ", " + j + " " + k) ;

}

}

Выполнение этой программы дает следующий результат.

i, j, k: ООО

Остановлено! i, j, k: 0, 0 3

Если бы не оператор goto, то в приведенной выше программе пришлось бы прибегнуть к трем операторам if и break, чтобы выйти из глубоко вложенной части этой программы. В данном случае оператор goto действительно упрощает код. И хотя приведенный выше пример служит лишь для демонстрации применения оператора goto, вполне возможны ситуации,

в которых этот оператор может на самом деле оказаться полезным.

И последнее замечание: как следует из приведенного выше примера, из кодового блока можно выйти непосредственно, но войти в него так же непосредственно нельзя.

ГЛАВА 6 Введение в классы, объекты и методы

Эта глава служит введением в классы. Класс составляет основу языка С#, поскольку он определяет характер объекта. Кроме того, класс служит основанием для объектно-ориентированного программирования (ООП).

В пределах класса определяются данные и код. А поскольку классы и объекты относятся к основополагающим элементам С#, то для их рассмотрения требуется не одна глава книги. В данной главе рассмотрение классов и объектов начинается с их главных особенностей.

Основные положения о классах

Классы использовались в примерах программ с самого начала этой книги. Разумеется, это были лишь самые простые классы, что не позволяло выгодно воспользоваться большинством их возможностей. На самом же деле классы намного более эффективны, чем это следует из приведенных ранее примеров их ограниченного применения.

Начнем рассмотрение классов с основных положений.

Класс представляет собой шаблон, по которому определяется форма объекта. В нем указываются данные и код, который будет оперировать этими данными. В C# используется спецификация класса для построения объектов, которые являются экземплярами класса. Следовательно, класс, по существу, представляет собой ряд схематических описаний способа построения объекта. При этом очень важно подчеркнуть, что класс является логической абстракцией.

Физическое представление класса появится в оперативной памяти лишь после того, как будет создан объект этого ( класса.

Общая форма определения класса

При определении класса объявляются данные, которые он содержит, а также код, оперирующий этими данными. Если самые простые классы могут содержать только код или только данные, то большинство настоящих классов содержит и то и другое.

Вообще говоря, данные содержатся в членах данных, определяемых классом, а код — в функциях-членах. Следует сразу же подчеркнуть, что в C# предусмотрено несколько разновидностей членов данных и функций-членов. Например, к членам данных, называемым также полями, относятся переменные экземпляра и статические переменные, а к функциям-членам — методы, конструкторы, деструкторы, индексаторы, события, операторы и свойства. Ограничимся пока что рассмотрением самых основных компонентов класса: переменных экземпляра и методов. А далее в этой главе будут представлены конструкторы и деструкторы. Об остальных разновидностях членов класса речь пойдет в последующих главах.

Класс создается с помощью ключевого слова class. Ниже приведена общая форма определения простого класса, содержащая только переменные экземпляра и методы.

class имя_класса {

// Объявление переменных экземпляра.

доступ тип переменная1;

доступ тип переменная2;

//...

Поделиться:
Популярные книги

О, Путник!

Арбеков Александр Анатольевич
1. Квинтет. Миры
Фантастика:
социально-философская фантастика
5.00
рейтинг книги
О, Путник!

Здравствуй, 1984-й

Иванов Дмитрий
1. Девяностые
Фантастика:
альтернативная история
6.42
рейтинг книги
Здравствуй, 1984-й

Плохой парень, Купидон и я

Уильямс Хасти
Любовные романы:
современные любовные романы
5.00
рейтинг книги
Плохой парень, Купидон и я

Полковник Гуров. Компиляция (сборник)

Макеев Алексей Викторович
Полковник Гуров
Детективы:
криминальные детективы
шпионские детективы
полицейские детективы
боевики
крутой детектив
5.00
рейтинг книги
Полковник Гуров. Компиляция (сборник)

Измена. Вторая жена мужа

Караева Алсу
Любовные романы:
современные любовные романы
5.00
рейтинг книги
Измена. Вторая жена мужа

Собрание сочинений. Том 5

Энгельс Фридрих
5. Собрание сочинений Маркса и Энгельса
Научно-образовательная:
история
философия
политика
культурология
5.00
рейтинг книги
Собрание сочинений. Том 5

Возвышение Меркурия. Книга 7

Кронос Александр
7. Меркурий
Фантастика:
героическая фантастика
попаданцы
аниме
5.00
рейтинг книги
Возвышение Меркурия. Книга 7

Блуждающие огни 4

Панченко Андрей Алексеевич
4. Блуждающие огни
Фантастика:
попаданцы
альтернативная история
5.00
рейтинг книги
Блуждающие огни 4

Злыднев Мир. Дилогия

Чекрыгин Егор
Злыднев мир
Фантастика:
фэнтези
7.67
рейтинг книги
Злыднев Мир. Дилогия

Этот мир не выдержит меня. Том 3

Майнер Максим
3. Первый простолюдин в Академии
Фантастика:
фэнтези
попаданцы
5.00
рейтинг книги
Этот мир не выдержит меня. Том 3

1941: Время кровавых псов

Золотько Александр Карлович
1. Всеволод Залесский
Приключения:
исторические приключения
6.36
рейтинг книги
1941: Время кровавых псов

Я – Стрела. Трилогия

Суббота Светлана
Я - Стрела
Любовные романы:
любовно-фантастические романы
эро литература
6.82
рейтинг книги
Я – Стрела. Трилогия

Поющие в терновнике

Маккалоу Колин
Любовные романы:
современные любовные романы
9.56
рейтинг книги
Поющие в терновнике

Стеллар. Трибут

Прокофьев Роман Юрьевич
2. Стеллар
Фантастика:
боевая фантастика
рпг
8.75
рейтинг книги
Стеллар. Трибут