Отправляет email-рассылки с помощью сервиса Sendsay
  Все выпуски  

C+Sharp+and+.NET [CSharp & .NET] 2001.09.18


Служба Рассылок Subscribe.Ru проекта Citycat.Ru

C Sharp and Dot NET

Содержание

  • 1. О рассылке
  • 2. Синтаксис C#
    • 2.1. Циклы
    • 2.2. Операторы перехода
    • 2.3. Условный оператор
    • 2.4. Оператор ветвления
  • 3. Письма
    • 3.1. Ошибка в таблице типов
    • 3.2. Статья про delegate

1. О рассылке

Я вижу данную расылку, как аналог премодерируемой конференции. Т.е. здесь мы, люди изучающие и использующие платформу .NET, сможем обменяться своими находками и идеями.
Присылайте письма с вопросами и ответами на адрес mailto:level3@mail.ru, они будут помещены в рассылку с указанием имени и (по желанию) адреса автора, если содержание соответствует тематике.
На письма с очень часто задаваемыми вопросами я постараюсь ответить не помещая их в рассылку, таким образом, надеюсь, что подписка будет интересной для Вас.

[К содержанию]

2. Синтаксис C# (часть [3/6])

2.1. Циклы

В С# есть четыре вида циклов

  • while
  • do-while
  • for
  • foreach

Переменные объявленные в цикле (в том числе в заголовке цикла for и foreach) не видны снаружи цикла (так же как в стандартном C++)

while

Пока истинно условие выполняется оператор - тело цикла.


int a = 3;
while (a < 3)
{
    System.Console.WriteLine(a);
    a++;
}

do-while

Здесь сначала один раз выполняется тело цикла, затем проверяется условие. Если условие истинно, то выполнение тела цикла повторяется.


int a = 4;
do
{
    System.Console.WriteLine(a);
    a++;
}
while (a < 3)

for

Этот цикл чаще всего используют когда число повторений известно заранее.


for (int a = 0; a < 5; a ++)
{
    System.Console.WriteLine(a);
}

Есть частная разновидность - бесконечный цикл - for (;;){...}
В C# рекомендуют бесконечный цикл писать как while(true){...}

foreach

Этот цикл полезен для перебора всех элементов в массиве, классах типа ArrayList и Hashtable (и вообще всех классах, реализующих IEnumerable)


int[] a = new int[]{1,2,3};
foreach (int b in a)
{
    System.Console.WriteLine(b);
}

При этом переменной b присваивается по очереди каждый элемент массива. Если переменная b имеет содержит непосредственно значение (а не ссылку на объект), то изменять элементы массива через нее не получится. Если же переменная b - объект, то через нее можно менять текущий элемент массива.

[К содержанию]

2.2. Операторы перехода

    К операторам перехода относятся
  • break
  • continue
  • goto
  • return
  • throw

break

Этот оператор может стоять внутри циклов for, do-while и while, а также внутри оператора switch. Выполнение оператора break приводит к выходу из цикла или оператора switch.

continue

Этот оператор может стоять внутри циклов for, do-while и while. Выполнение оператора continue приводит к переходу на проверку условия цикла

goto

Оператор goto используется для перехода на метку и внутри оператора switch. Переходы на метку использовать не рекомендуется.


int a = 0;
start:
System.Console.WriteLine(a);
a++;
if (a < 5)
{
    goto start;
}
[К содержанию]

2.3. Оператор выбора (условный оператор)

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


if (a == 5)
    System.Console.WriteLine("A is 5");
else
    System.Console.WriteLine("A is not 5");

Еще бывает операция выбора


(a == 5) ? true : false ;

[К содержанию]

2.4. Оператор ветвления

Здесь выполняется одна из альтернативных ветвей в зависимости от значения управляющего выражения


switch (nValue)
{
    case 1: case 2: case 3: case 4: case 5:
        Console.WriteLine("Rabbit walk through the street" );
        break; // this line is necessary
}
switch (someString)
{
    default:
        break;
    case null:
        break;
    case "leavetakings" : // two cases for code
    case "greetings" :
        goto default;
    case "goodbye" :
        goto case "leavetakings";
    case "error":
        // int i = 5;
        // if you uncomment previous line you should get
        // "control cannot fall through from one case to another"
error
    case "next case":
        throw new ApplicationException();
}

Отличительной возможностью C# является возможность ветвления по строкам и запрет на переход между блоками без явного на это указания (при компиляции выдается ошибка)

Есть возможность сопоставить одному блоку несколько значений (в примере - "leavetakings" и "greetings"). Есть возможность передать управление на другой блок (goto case x; goto default;).

В случае если делается ветвление по переменной типа string, значение которой равно null, а соответствующий case отсутствует, будет выполняться ветвь default (если такая есть). null - вполне полноправное значение переменной типа string и NullPointerException оператором switch выбрасываться не будет.

[К содержанию]

3. Письма

3.1. Ошибка в таблице типов


-----Original Message-----
From: Fiery Dragon
Sent: Tuesday, September 18, 2001 12:44 PM
To: level3@mail.ru
Subject:

Добрый день, Сергей!

Очень рад Вашей подписке хотя бы уже потому, что "родная" документация написана уж очень тяжелым канцелярским языком. Спасибо за переложение. :) Мне кажется в таблице типов допущена некоторая неточность: разве single и double переменные не имеют знакового разряда? Как же тогда представляются отрицательные числа?

С уважением, Ю. Васин

[SergeyR: конечно имеют, спасибо]

[К содержанию]

3.2. Статья про delegate

http:// www.infocity.kiev.ua/prog/c/content/progother030.shtml

Если Вам есть что сказать или о чем спросить - пишите на адрес mailto:level3@mail.ru

С уважением и наилучшими пожеланиями,
Сергей Радкевич.


http://subscribe.ru/
E-mail: ask@subscribe.ru
Отписаться
Убрать рекламу
Рейтингуется SpyLog

В избранное