Выполнение явных преобразований с помощью команд преобразования
Существует множество специальных команд явных преобразований (см. табл.). Здесь val может быть переменной почти любого типа. Если не может быть обработана данными командами, то компилятор выдаст соответствующее сообщение.
Команда коллекции Convert | val преобразовано в |
.ToBoolean(val) | bool |
.ToByte(val) | byte |
.ToChar(val) | char |
.ToDecimal(val) | decimal |
.ToDouble(val) | double |
.ToInt16(val) | short |
.ToInt32(val) | int |
.ToInt64(val) | long |
.ToSByte(val) | sbyte |
.ToSingle(val) | float |
.ToString(val) | string |
.ToUInt16(val) | ushort |
.ToUInt32(val) | uint |
.ToUInt64(val) | ulong |
Здесь имена команд преобразования несколько отличаются от названий типов, принятых в С#; например, для того чтобы произвести преобразование в тип int, следует использовать команду Convert.Tolnt32(). Это объясняется тем, что имена в командах Пространства Имен System.NET Framework и не являются родными для С#. Зато благодаря этому их можно использовать из любых других языков, совместимых с .NET.
Рассмотрим пример использования всех видов преобразований типов:
static void Main(string[] args)
{
short shortResult, shortVal = 4;
int integerVal = 67;
long longResult;
float floatVal = 10.5F;
double doubleResult, doubleVal = 99.999;
string stringResult, stringVal = "17";
bool boolVal = true;
doubleResult = floatVal * shortVal;
Console.WriteLine("Неявно -> double: {0} * {1} -> {2}", floatVal, shortVal, doubleResult);
shortResult = (short)floatVal;
Console.WriteLine("Явно -> short: {0} -> {1}", floatVal, shortResult);
stringResult = Convert.ToString(boolVal) + Convert.ToString(doubleVal);
Console.WriteLine("Явно -> string: \"{0}\" + \"{1}\" -> {2}", boolVal, doubleVal, stringResult);
longResult = integerVal + Convert.ToInt64(stringVal);
Console.WriteLine("Смешанно -> long: {0} + {1} -> {2}", integerVal, stringVal, longResult);
Console.ReadKey();
}
Результат выполнения программы:
Неявно -> double: 10,5 * 4 -> 42
Явно -> short: 10,5 -> 10
Явно -> string: "True" + "99,999" -> True99,999
Смешанно -> long: 67 + 17 -> 84
Здесь видно, что преобразования типов выполняются:
при определении литералов-констант (10.5F);
при выполнении операции присваивания;
при вычислении значений выражений (floatVal * shortVal).
Выполнение любого не унарного оператора может привести к преобразованию типов.
В приведенном примере перемножаются значения типа short и типа float. В подобных ситуациях, когда выполнение преобразования явно не указано, если это возможно, будет выполняться неявное преобразование. В данном примере выполняется преобразование short в значение типа float, поскольку преобразование из float в short должно задаваться явно, например, так: (short)floatVal * shortVal.
Дата добавления: 2021-12-14; просмотров: 299;