Операция new

Операция new служит для создания нового объекта. Формат операции:

new тип ([ аргументы ])

С помощью этой операции можно создавать объекты как ссылочных, так и зна­чимых типов, например:

object z = new object();

int i = new int(); // то же самое, что int i = 0;

Объекты ссылочного типа обычно формируют именно этим способом, а пере­менные значимого типа чаще создаются так, как описано ранее в разделе «Пере­менные».

При выполнении операции new сначала выделяется необходимый объем памяти (для ссылочных типов в хипе, для значимых — в стеке), а затем вызывается так называемый конструктор по умолчанию, то есть метод, с помощью которого ини­циализируется объект. Переменной значимого типа присваивается значение по умолчанию, которое равно нулю соответствующего типа. Для ссылочных типов стандартный конструктор инициализирует значениями по умолчанию все поля объекта.

Если необходимый для хранения объекта объем памяти выделить не удалось, генерируется исключение OutOfMemoryException.

Операции отрицания

Арифметическое отрицание (унарный минус -) меняет знак операнда на проти­воположный. Стандартная операция отрицания определена для типов int, long, loat, double и decimal. К величинам других типов ее можно применять, если для них возможно неявное преобразование к этим типам (см. рис. 3.1). Тип результа­та соответствует типу операции.

ПРИМЕЧАНИЕ -

Для значений целого и финансового типов результат достигается вычитанием ис­ходного значения из нуля. При этом может возникнуть переполнение. Будет ли при этом выброшено исключение, зависит от контекста.

Логическое отрицание (!) определено для типа bool. Результат операции —

значение false, если операнд равен true, и значение true, если операнд равен

false.

Поразрядное отрицание (~), часто называемое побитовым, инвертирует каждый

разряд в двоичном представлении операнда типа int, uint, long или ulong.

Операции отрицания представлены в листинге 3.3.

Листинг 3.3. Операции отрицания

using System;

namespace ConsoleApplication1

{

class Class1

{

static void Main()

{

sbyte a = 3.b = -63, с = 126;

bool d = true;

Console.WriteLine(-a); // Результат -3

Console.WriteLine(-c); // Результат -126

Console.WriteLine(!d); // Результат false

Console.Wntel_ine(~a); // Результат -4

Console.WriteLine(~b); // Результат 62

Console.WriteLine(~с); // Результат -127

}

}

}


Понравилась статья? Добавь ее в закладку (CTRL+D) и не забудь поделиться с друзьями:  



double arrow
Сейчас читают про: