Ответы с форумов MSDN

Что происходит при преобразовании целочисленных типов в C#?

Date: 24.02.2017 19:01:31

Что происходит? Да ничего особенного, посмотрите сами:

static void Main(string[] args)
        {
            unchecked
            {
                short sh;
                sh = (short)Int32.MaxValue;
                Console.WriteLine(sh.ToString());
            }
        }
.maxstack  1
  .locals init ([0] int16 sh)
  IL_0000:  ldc.i4.m1 		//Push -1 onto the stack as int32.
  IL_0001:  stloc.0 		//Pop a value from stack into local variable 0.
  IL_0002:  ldloca.s   sh 	//Load address of local variable with index indx, short form
  IL_0004:  call       instance string [mscorlib]System.Int16::ToString()
  IL_0009:  call       void [mscorlib]System.Console::WriteLine(string)
  IL_000e:  ret
Для целочисленных типов без смены знаковости, операция преобразования является просто другой интерпретацией того же участка памяти. Специальные операции преобразования есть при преобразовании signed <-> unsigned, или из целых в вещественные.


Автор: VadimTagil

Главная страница - Список тем - Репозиторий на GitHub