// и т.д.

В C# этого не делают. Методы всегда определяются полностью в определении класса

class MyClass {

 public void MyMethod() {

  // здесь реализация

На первый взгляд может показаться, что это ведет к коду, который труднее читать. Достоинство подхода C++ в этом вопросе в конце концов состоит в том что можно просто просмотреть заголовочный файл, чтобы узнать, какие открытые функции предоставляет класс, не обращаясь к реализации этих функций. Однако это больше не требуется в C#, частично в связи с использованием современных редакторов (редактор Visual Studio.NET позволяет сворачивать реализации методов), а частично в связи с тем, что C# имеет средство автоматического создания документации для кода в формате XML.

Поток выполнения программы

Поток выполнения программы в C# аналогичен потоку C++. В частности, следующие инструкции работают точно таким же образом в C#, как они работают в C++, и имеют точно такой же синтаксис:

for

return

goto

break

continue

Существует пара синтаксических различий для инструкций if, while, do…while и switch, и C# предоставляет дополнительную инструкцию управления потоком выполнения foreach.

if…else

Инструкция if работает точно таким же образом и имеет такой же синтаксис в C#, как и в C++, кроме одного момента. Условие в каждом предложении if или else должно оцениваться как bool. Например, предположим что х является целым типом данных, а не bool, тогда следующий код C++ будет создавать ошибку компиляции в C#:

if (х) {

Правильный синтаксис C# выглядит так:

if (x != 0) {

так как оператор != возвращает bool.

Это требование является хорошей иллюстрацией того, как дополнительная безопасность типов в C# заранее перехватывает ошибки. Ошибки времени выполнения в C++, вызываемые написанием if (a=b), когда предполагалось написать if (a==b) являются достаточно распространенными. В C# эти ошибки будет перехватываться во время компиляции.

Отметим, что в C# невозможно преобразовать числовые переменные в или из bool.

while и do…while

Также, как и для if, эти инструкции имеют точно такой же синтаксис и назначение в C#, как и в C++, за исключением того, что условное выражение должно оцениваться как bool.

int X;

while (X) {/* инструкции */} // неправильно

while (X != 0) {/* инструкции */} // правильно

switch 

Инструкция switch служит для тех же целей в C#, что и в C++. Она является, однако, более мощной в C#, так как используется строка в качестве проверяемой переменной, что невозможно в C ++:

string MyString; // инициализировать MyString

switch (MyString) {

case 'Hello':

 // что-нибудь сделать

 break;

case 'Goodbye':

 // и т.д.

Синтаксис в C# слегка отличается тем, что каждое предложение case должно явно заканчиваться. Не разрешается одному case содержать другой case, если только первый case не является пустым. Если желательно получить такой результат, используйте инструкцию goto.

switch (MyString) {

case 'Hello':

 // что-нибудь сделать

 goto case 'Goodbye'; // перейдет к выполнению инструкций

                      // в предложении 'Goodbye'

case 'Goodbye':

 // сделать что-то еще

 break;

case 'Black': // здесь можно провалиться, так как он пустой

case 'White':

 // сделать что-то еще

 // выполняется, если MyString содержит

 // либо 'Black', либо 'White'

 break;

default:

 int j = 3;

 break;

}

Компания Microsoft решила использовать инструкцию goto в этом контексте, чтобы предотвратить появление ошибок в случае, если требовалось выполнить пропущенный break, и код в инструкции switch проваливался в следующее предложение

Добавить отзыв
ВСЕ ОТЗЫВЫ О КНИГЕ В ИЗБРАННОЕ

0

Вы можете отметить интересные вам фрагменты текста, которые будут доступны по уникальной ссылке в адресной строке браузера.

Отметить Добавить цитату