Главная Случайная страница


Полезное:

Как сделать разговор полезным и приятным Как сделать объемную звезду своими руками Как сделать то, что делать не хочется? Как сделать погремушку Как сделать так чтобы женщины сами знакомились с вами Как сделать идею коммерческой Как сделать хорошую растяжку ног? Как сделать наш разум здоровым? Как сделать, чтобы люди обманывали меньше Вопрос 4. Как сделать так, чтобы вас уважали и ценили? Как сделать лучше себе и другим людям Как сделать свидание интересным?


Категории:

АрхитектураАстрономияБиологияГеографияГеологияИнформатикаИскусствоИсторияКулинарияКультураМаркетингМатематикаМедицинаМенеджментОхрана трудаПравоПроизводствоПсихологияРелигияСоциологияСпортТехникаФизикаФилософияХимияЭкологияЭкономикаЭлектроника






Исключения имеют следующие свойства





· Исключения имеют типы, в конечном счете являющиеся производными от System.Exception.

· Следует использовать блок try для заключения в него инструкций, которые могут выдать исключения.

· При возникновении исключения в блоке try поток управления немедленно переходит к первому соответствующему обработчику исключений, присутствующему в стеке вызовов. В языке C# ключевое слово catch используется для определения обработчика исключений.

· Если обработчик для определенного исключения не существует, выполнение программы завершается с сообщением об ошибке.

· Не перехватывайте исключение, если его нельзя обработать, и оставьте приложение в известном состоянии. При перехвате System.Exception вновь инициируйте это исключение с использованием ключевого слова throw в конце блока catch.

· Если в блоке catch определяется переменная исключения, ее можно использовать для получения дополнительной информации о типе произошедшего исключения.

· Исключения могут явно генерироваться программной с помощью ключевого слова throw.

· Объекты исключения содержат подробные сведения об ошибке, такие как состояние стека вызовов и текстовое описание ошибки.

· Код в блоке finally выполняется, даже при возникновении исключения. Блок finally используется для освобождения ресурсов, например для закрытия потоков или файлов, открытых в блоке try.

 

Примеры:

try
{
// Code to try goes here.
}
catch (SomeSpecificException ex)
{
// Code to handle the exception goes here.
// Only catch exceptions that you know how to handle.
// Never catch base class System.Exception without
// rethrowing it at the end of the catch block.
}

 

try
{
// Code to try goes here.
}
finally
{
// Code to execute after the try block goes here.
}

 

try
{
// Code to try goes here.
}
catch (SomeSpecificException ex)
{
// Code to handle the exception goes here.
}
finally
{
// Code to execute after the try (and possibly catch) blocks
// goes here.
}

 

(https://msdn.microsoft.com/ru-ru/library/ms173160.aspx, https://msdn.microsoft.com/ru-ru/library/ms173162.aspx)

10. Понятие шаблонов, и работа с шаблонами на примере С++.

(Туривный С.)

 

Шабло́ны (англ. template) — средство языка C++, предназначенное для кодирования обобщённых алгоритмов, без привязки к некоторым параметрам (например, типам данных, размерам буферов, значениям по умолчанию).

В C++ возможно создание шаблонов функций и классов.

Шаблоны позволяют создавать параметризованные классы и функции. Параметром может быть любой тип или значение одного из допустимых типов (целое число, enum, указатель на любой объект с глобально доступным именем, ссылка). Например, нам нужен какой-то класс:

class SomeClass{
int SomeValue;
int SomeArray[20];
...
};


Для одной конкретной цели мы можем использовать этот класс. Но, вдруг, цель немного изменилась, и нужен еще один класс. Теперь нужно 30 элементов массива SomeArray и вещественный тип SomeValue элементов SomeArray. Тогда мы можем абстрагироваться от конкретных типов и использовать шаблоны с параметрами. Синтаксис: в начале перед объявлением класса напишем слово template и укажем параметры в угловых скобках. Внашемпримере:

template<int ArrayLength, typename SomeValueType >class SomeClass{
SomeValueType SomeValue;
SomeValueType SomeArray[ ArrayLength ];
...
};


Тогда для первой модели пишем:

SomeClass <20, int> SomeVariable;


длявторой:

SomeClass <30, double> SomeVariable2;


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

 

Шаблон функции начинается с ключевого слова template, за которым в угловых скобках следует список параметров. Затем следует объявление функции:

template<typename T >
void sort(T array[], int size); // прототип: шаблон sort объявлен, но не определён

template<typename T >
void sort(T array[], int size) // объявление и определение
{
T t;
for(int i =0; i < size -1; i++)
for(int j = size -1; j > i; j--)
if(array[j]< array[j-1])
{
t = array[j];
array[j]= array[j-1];
array[j-1]= t;
}
}

template<int BufferSize > // целочисленный параметр
char* read()
{
char*Buffer =newchar[ BufferSize ];
/* считывание данных */
return Buffer;
}


Ключевое слово typename появилось сравнительно недавно, поэтому стандарт[1] допускает использование class вместо typename:

template<class T >


Вместо T допустим любой другой идентификатор.

 

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

template<class T >
class List
{
/*... */
public:
void Add(const T& Element);
bool Find(const T& Element);
/*... */
};

 

Параметрами шаблонов могут быть: параметры-типы, параметры обычных типов, параметры-шаблоны.

Для параметров любого типа можно указывать значения по умолчанию.

template<class T1, // параметр-тип
typename T2, // параметр-тип
int I, // параметр обычного типа
T1 DefaultValue, // параметр обычного типа
template<class>class T3, // параметр-шаблон
class Character =char // параметр по умолчанию
>

(https://ru.wikipedia.org/wiki/%D0%A8%D0%B0%D0%B1%D0%BB%D0%BE%D0%BD%D1%8B_C%2B%2B)

 

Date: 2015-07-17; view: 516; Нарушение авторских прав; Помощь в написании работы --> СЮДА...



mydocx.ru - 2015-2024 year. (0.007 sec.) Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав - Пожаловаться на публикацию