Почему декомпилированный код для класса Int16 показывает, что MinValue в Visual Studio равно "--32768"? - PullRequest
0 голосов
/ 11 декабря 2018

Играя с основными типами в C # (.NET Core 2.1), я только что увидел, что в Visual Studio 2017 (версия 15.9.2) декомпилированный код для класса Int16 показывает следующее:

public const Int16 MaxValue = 32767;
public const Int16 MinValue = --32768;

Обратите внимание на два знака минуса в минимальном значении.Также для Int32:

public const Int32 MaxValue = 2147483647;
public const Int32 MinValue = --2147483648;

И Int64:

public const Int64 MaxValue = 9223372036854775807;
public const Int64 MinValue = --9223372036854775808;

Тем не менее в декомпилированном коде для класса Double значение отображается правильно (только с одним знаком минус)):

public const Double MinValue = -1.7976931348623157E+308;
public const Double MaxValue = 1.7976931348623157E+308;

Очевидно, что если я пытаюсь написать short value = --32768;, компилятор выдает ошибку при попытке уменьшить постоянное значение.

Страница справки для класса Int16 показано, что минимальное значение:

public const short MinValue = -32768;

И исходный код для .NET Core показывает это:

public const short MaxValue = (short)0x7FFF;
public const short MinValue = unchecked((short)0x8000);

Итак, ямне просто любопытноПочему декомпилятор показывает, что минимальное значение для класса Int16 равно --32768?

...