Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
C# Лекция_3 Выражения и операции.docx
Скачиваний:
28
Добавлен:
18.12.2018
Размер:
667.21 Кб
Скачать
      1. Операция индексации a[I, j]

О массивах подробно поговорим в одной из ближайших лекций этого курса. Сейчас скажем, что если уже объявлен массив, то в выражении можно использовать элемент этого массива, задав индексы этого элемента. Так, например, если объявлен одномерный массив w, содержащий n элементов, то выражение w[i] будет определять i-й элемент этого массива, где индекс принимает значения от 0 до n-1.

      1. Операция new

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

new <вызов конструктора объекта>

Чаще всего эта операция встречается в инициализаторах объекта в момент его объявления. Но допустимы и другие способы применения этой операции, скажем, в качестве фактического аргумента при вызове метода класса. Приведу совсем экзотический пример, где new встречается в арифметическом выражении:

Type tip = (n + new double()).GetType();

Рассмотрим обычное объявление скалярной переменной значимого типа:

int x = 77;

Это объявление можно рассматривать как краткую форму записи следующих операторов:

int x = new int(); x = 77;

      1. Операции sizeof и typeof

Операция sizeof возвращает заданный в байтах размер памяти, отводимой для хранения экземпляра класса. Ее единственным аргументом является имя класса. Существенное ограничение состоит в том, что она не применима к классам, создаваемым программистом.

Операция typeof возвращает объект класса Type, характеризующий тип класса, заданного в качестве аргумента операции. В отличие от операции sizeof она применима к классам, создаваемым программистом. Тот же результат, что и операция typeof, дает метод GetType, вызванный объектом - экземпляром класса. Этот метод наследуется от родительского класса object и существует у всех классов, в том числе и создаваемых программистом.

Приведу пример использования этих операций:

/// <summary>

/// определение размеров и типов

/// </summary>

public void SizeMethod()

{

Console.WriteLine("Размер типа Boolean = " + sizeof(bool));

Console.WriteLine("Размер типа double = " + sizeof(double));

Console.WriteLine("Размер типа char = " + sizeof(System.Char));

//Console.WriteLine("Размер класса TestingExpressoins = " +

// sizeof(TestingExpressions));

int b1 = 1;

Console.WriteLine("Тип переменной int b1: {0}, {1}",

b1.GetType(), typeof(int));

Console.WriteLine("Тип класса TestingExpressoins = {0}",

typeof(TestingExpressions));

}//SizeMethod

В этом примере операция применяется к трем встроенным типам - bool, double, char. Попытка применить эту операцию к собственному классу приводит к ошибке компиляции и потому закомментирована.

Операция typeof с успехом применена как к собственному классу TestingExpressions, так и к встроенному классу int.

На рис. 3.1 приведены результаты вывода на консоль, полученные при вызове этого метода.

Рис. 3.1. Результаты выполнения операций sizeof и typeof