В .NET Framework можно использовать другие классы для выполнения некоторых преобразований, которые не поддерживаются статическими методами Convert класса. Сюда входит следующее.
Преобразование в байтовые массивы BitConverter класс предоставляет методы, которые преобразуют примитивные числовые типы (включая Boolean ) в байтовые массивы и обратно в типы данных-примитивы.
Кодирование символов и декодирование Encoding класса и его производных классов (например, UnicodeEncoding и UTF8Encoding ) предоставляют методы для кодирования массива символов или строки (то есть для преобразования их в массив байтов в определенной кодировке) и для декодирования закодированного массива байтов (т. е. преобразование массива байтов обратно в символы Юникода в кодировке UTF16. Дополнительные сведения см. в разделе кодировка символов в .NET.
Иерархия преобразований внутри арифметического типа
Диаграмма, приведенная на рисунке, позволяет отвечать на ряд важных вопросов, связанных с существованием преобразований между типами. Если на диаграмме задан путь (стрелками) от типа А к типу В, то это означает существование неявного преобразования из типа А в тип В. Все остальные преобразования между подтипами арифметического типа существуют, но являются явными. Заметьте, что циклов на диаграмме нет, все стрелки односторонние, так что преобразование, обратное к неявному, всегда должно быть задано явным образом.
Путь, указанный на диаграмме, может быть достаточно длинным, но это вовсе не значит, что выполняется вся последовательность преобразований, следуя данному пути. Наличие пути говорит лишь о существовании неявного преобразования, само преобразование выполняется только один раз, – из типа источника А в тип назначения В.
Иногда возникает ситуация, при которой для одного типа источника может одновременно существовать несколько типов назначений и необходимо осуществить выбор цели – типа назначения. Такие проблемы выбора возникают, например, при работе с перегруженными методами в классах.
Понятие перегрузки методов и операций подробно будет рассмотрено в последующих лекциях. См. лекция 8, ??
Диаграмма, приведенная на рис.4.1 и здесь помогает понять, как делается выбор. Пусть существует две или более реализации перегруженного метода, отличающиеся типом формального аргумента. Тогда при вызове этого метода с аргументом типа T может возникнуть проблема выбора, какую реализацию выбрать, поскольку для нескольких реализаций может быть допустимым преобразование аргумента типа T в тип, заданный формальным аргументом данной реализации метода. Правило выбора реализации при вызове метода таково – выбирается та реализация, для которой путь преобразований, заданный на диаграмме, короче. Если есть точное соответствие параметров по типу (путь длины 0), то, естественно, именно эта реализация и будет выбрана.
Давайте рассмотрим еще один тестовый пример. В класс Testing включена группа перегруженных методов OnLoad с одним и двумя аргументами. Вот эти методы:
Do'stlaringiz bilan baham: |