Заглавная страница Избранные статьи Случайная статья Познавательные статьи Новые добавления Обратная связь FAQ Написать работу КАТЕГОРИИ: ТОП 10 на сайте Приготовление дезинфицирующих растворов различной концентрацииТехника нижней прямой подачи мяча. Франко-прусская война (причины и последствия) Организация работы процедурного кабинета Смысловое и механическое запоминание, их место и роль в усвоении знаний Коммуникативные барьеры и пути их преодоления Обработка изделий медицинского назначения многократного применения Образцы текста публицистического стиля Четыре типа изменения баланса Задачи с ответами для Всероссийской олимпиады по праву
Мы поможем в написании ваших работ! ЗНАЕТЕ ЛИ ВЫ?
Влияние общества на человека
Приготовление дезинфицирующих растворов различной концентрации Практические работы по географии для 6 класса Организация работы процедурного кабинета Изменения в неживой природе осенью Уборка процедурного кабинета Сольфеджио. Все правила по сольфеджио Балочные системы. Определение реакций опор и моментов защемления |
Настройка проверки на предмет возникновения условий переполнения в масштабах проектаСодержание книги
Поиск на нашем сайте
Если создаётся приложение, в котором переполнение никогда не должно проходить незаметно, может выясниться, что обрамлять ключевым словом checked приходится раздражающе много строк кода. На такой случай в качестве альтернативного варианта в компиляторе С# поддерживается флагкомпилятора /checked. При активизации этого флага проверке на предмет возможного переполнения будут автоматически подвергаться все имеющиеся в коде арифметические операции, без применения для каждой из них ключевого слова checked. Обнаружение переполнения точно так же приводит к генерации соответствующего исключения во время выполнения. Для активизации этого флага в среде разработки Visual Studio 2010 необходимо открыть страницу свойств проекта, перейти на вкладку «Построение», нажать на кнопке «Дополнительно» и в открывшемся диалоговом окне отметить флажок « Проверять арифметические переполнения и потери точности »:
Рис. 7. 1. Дополнительные параметры построения: отмечаем нужный пункт
Важно отметить, что в С# предусмотрено ключевое слово unchecked, которое позволяет отключить выдачу связанного с переполнением исключения в отдельных случаях. Итак, чтобы подвести итог по использованию в С# ключевых слов checked и unchecked, следует отметить, что по умолчанию арифметическое переполнение в исполняющей среде.NET игнорируется. Если необходимо обработать отдельные операторы, то должно использоваться ключевое слово checked, а если нужно перехватывать все связанные с переполнением ошибки в приложении, то понадобится активизировать флаг /checked. Что касается ключевого слова unchecked, то его можно применять при наличии блока кода, в котором переполнение является допустимым (и, следовательно, не должно приводить к генерации исключения во время выполнения). Роль класса System.Convert
В завершении темы преобразования типов данных стоит отметить, что в пространстве имен System имеется класс Convert, который тоже может применяться для расширения и сужения данных:
byte sum = Convert.ToByte(var1 + var2);
Одно из преимуществ подхода с применением класса System.Convert связано с тем, что он позволяет выполнять преобразования между типами данных нейтральным к языку образом (например, синтаксис приведения типов в Visual Basic полностью отличается от предлагаемого для этой цели в С#). Однако, поскольку в С# есть операция явного преобразования, использование класса Convert для преобразования типов данных обычно является делом вкуса.
9. Исключения преобразования типов во время выполнения
В некоторых преобразованиях ссылочного типа компилятор не может определить, допустимо ли приведение. Для операции приведения возможна корректная ошибка компилятора во время выполнения. Как показано в следующем примере, приведение типов, которое заканчивается с ошибкой во время выполнения, вызывает InvalidCastException:
using System; using System.Collections.Generic; using System.Linq; using System.Text;
namespace LC_Console { class Animal { public void Eat() { Console.WriteLine("Можно есть."); } public override string ToString() { return "Я - жЫвотное."; } } class Reptile: Animal { } class Mammal: Animal { }
class Program { static void Main() { Test(new Mammal()); Console.WriteLine("Для продолжения нажмите любую клавишу... "); Console.ReadKey(); }
static void Test(Animal a) { // Вызввает исключение InvalidCastException во время запуска // Mammal не конвертируется в Reptile Reptile r = (Reptile)a; } } } /* Выведет (после запуска выдаст исключение): * <ничего не выведет> */
C# предоставляет операторы is и as, чтобы можно было проверить совместимость перед действительным выполнением приведения.
Дополнительные сведения о операторах привидения можно посмотреть в разделе Практическое руководство. Безопасное приведение с помощью операторов as и is (Руководство по программированию на C#) (http://msdn.microsoft.com/ru-ru/library/cc488006.aspx).
|
||
|
Последнее изменение этой страницы: 2016-12-28; просмотров: 439; Нарушение авторского права страницы; Мы поможем в написании вашей работы! infopedia.su Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав. Обратная связь - 216.73.216.198 (0.006 с.) |