Почему это свойство не рассматривается как Nullable?C#

Место общения программистов C#
Anonymous
Почему это свойство не рассматривается как Nullable?

Сообщение Anonymous »

Для следующего класса

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

    public class Component
{
public TValue? MaxValue { get; set; }
public TValue? MinValue { get; set; }
public TValue Value { get; set; } = default!;

public override string ToString() =>
$"MinValue = {MinValue}, MaxValue = {MaxValue}, Value = {Value}";
}
Почему, когда я создаю экземпляр Component, свойства MinValue и MaxValue имеют значение int вместо Nullable?

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

        static void Main(string[] args)
{
var instance = new Component();
instance.Value = 42;
Console.WriteLine(instance.ToString());
}
Я мог бы заставить его вести себя так, как я хочу, добавив где TValue: struct, но я пишу компонент Blazor, который должен работать с любым числовым типом (включая значения NULL), поэтому я не могу добавить это ограничение.
Я хотел бы знать логику, почему TValue? для int не следует компилировать как Nullable.

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

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