Поведение интерфейса C# `IBinaryInteger.GetByteCount()`C#

Место общения программистов C#
Anonymous
Поведение интерфейса C# `IBinaryInteger.GetByteCount()`

Сообщение Anonymous »

Я обнаружил странное поведение при работе с числами в C# (.NET8 версии 8.0.400).
Я создал собственный тип для переноса чисел, это минимизированный код для демонстрации поведения:

Код: Выделить всё

struct Mystery(T value)
where T : IBinaryInteger
{
public T Value { get; } = value;

public int GetByteCount() => Value.GetByteCount();
}
Код выполнения:

Код: Выделить всё

Mystery mystery = new(short.MaxValue);

// Mystery mystery = new(new BigInteger(short.MaxValue)); // same behavior

Console.WriteLine(mystery.GetByteCount()); // 4
Console.WriteLine(mystery.Value.GetByteCount()); // 2
Console.WriteLine(((IBinaryInteger)mystery.Value).GetByteCount()); // 4
Выход: Поскольку я создал тип Mystery для обертывания числа, я бы хотел, чтобы Mystery.GetByteCount() вела себя точно так же, как Value.GetByteCount()
code>.
Однако, как видно из результатов, мой код не работает должным образом.
Где я ошибся?

Подробнее здесь: https://stackoverflow.com/questions/790 ... tbytecount

Вернуться в «C#»