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

Язык программирования C# и платформа .NET [CSharp & .NET] 2001.09.24


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

Содержание

  • 1. О рассылке
  • 2. Синтаксис C#
    • 2.1. Массивы
    • 2.2. Исключения
  • 3. Письма
    • 3.1. Про оператор switch
    • 3.2. Ссылки

1. О рассылке

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

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

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

2.1. Массивы

Массивы имеют тип System.Array и не копируются при присваивании (т.е. это ссылки а не значения). Массивы можно использовать в циклах foreach. Свойство Length содержит общее число элементов массива (по всем измерениям).

Одномерные массивы (векторы в C++)

Тип массива включает в себя информацию о базовом типом элементов, которые может содержать массив, и о размерности (количестве индексов) массива.

Одномерные массивы определяются так:

int[] arr = new int[100];

Здесь arr - имя массива, 100 - количество элементов в массиве, первый элемент - arr[0], последний arr[99].

Заполнить массив можно тремя способами:

  • int i = new int[2];
    i[0] = 1;
    i[1] = 2;
    
  • int[] i = new int[]
    {1,2};
  • int[] i = {1,2};

Используя класс System.Array можно сделать массив с произвольным значением индекс первого элемента.

Прямоугольные массивы (Такой конструкции нет в Java)

Двумерный массив 2 x 3:


int[,] squareArray1 = new int[2,3];
int[,] squareArray2 = {{1, 2, 3}, {4, 5, 6}};

for(i = 0; i < squareArray2.GetLength(0); i++)
{
     for (j = 0; j < squareArray2.GetLength(1); j++)
     {
         Console.WriteLine(squareArray[i,j]);
     }
}

Чтобы получить граничные индексы элементов в некотором измерении, нкжно воспользоваться функциями GetUpperBound(int i) и GetLowerBound(int i), где i - номер измерения (считая с нуля). GetLength(int i) вернет количество элементов в некотором измерении.

Массивы из массивов (Jagged Arrays)

Они подходят для текстовых редакторов.

// memory allocation and object zeroing
int[][] jag1 = new int[2][];
jag1[0] = new int [4];
jag1[1] = new int [6];
for (int i = 0; i < jag1.GetLength(0); i++)
{
     for (int j = 0; j < jag1[h].GetLength(0); j++)
     {
         Console.WriteLine(jag1[i][j]);
     }
}

// creating an initialized array
int[][] jag2 = new int[][]
{
    new int[] {1, 2, 3, 4},
    new int[] {5, 6, 7, 8, 9, 10}
};
for (int i = 0; i < jag2.Length; i++)
{
    for (int j = 0; j < jag2[h].Length; j++)
    {
        Console.WriteLine(jag2[i][j]);
    }
}

Indexer'ы

    Индексеры (как бы их по-русски поудачнее назвать?) могут пригодиться если нужно:
  • сделать разряженный массив;
  • хранить массив не в памяти, а, к примеру, на диске;
  • вычислять значения массива на лету и хранить только измененные значения

Синтаксис:


public double this[int i, int j]
{
    set
    {
        MyCodeToStoreValue(i, j, value);
    }
    get
    {
        double res = MyMethodToRetrieveValue(i, j);
        return res;
    }
}

Здесь value - ключевое слово, которое обозначает значение

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

2.2. Исключения

Исключения могут быть выброшены двумя способами: либо оператором throw (в этом случае оно выбрасывается всегда). Либо при возникновении особой ситуации (например деления на ноль) - это случается не всегда (и по-идее должно не случаться)

Исключения ловятся блоками try-catch:


try
{
    throw new Exception();
}
catch (Exception ex)
{
}
finally
{
}

Блок finally выполняется независимо от того - было исключение или нет. (Это альтернатива деструкторам)

Можно написать несколько блоков catch подряд, в этом случае выбирается первый подходящий по типу. Поэтому следует писать обработчики специальных исключений сначала, а базовых исключений в конце.

Свои исключения стоит наследовать от ApplicationException
Дальнейшие пояснения здесь - http://msdn.microsoft.com/library/default.asp?url=/library/en-us/dncscol/htm l/csharp08162001.asp

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

3. Письма

3.1. Про оператор switch


-----Original Message-----
From: Serg Vorontsov
Sent: Tuesday, September 18, 2001 9:30 PM
To: level3@mail.ru

Hi !

Про оператор switch я бы дополнил еще важную деталь: ветвь цикла по стандарту должна обязательно заканчиваться оператором break или другим оператором перехода. Это, кстати, важное отличие Beta 2 от Beta 1.

With best regards, Serg Vorontsov.

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

3.2. Ссылки

Что такое .NET (старая, но полезная статья)
http://www.digdes.ru/news/a rt010117.shtml

Обзор C#
http://www.osp.ru/pcw orld/2001/07/122_print.htm

"Windows Forms: Современная модель программирования для создания GUI приложений"
Prosise J.
(Краткий обзор Windows-форм)
http:// infocity.kiev.ua/index.php?l=prog/basic&u=basic040&r=1

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


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

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



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

В избранное