Компилятор C# не принимает значение NULL для свойства универсального типа, допускающего значение NULL.C#

Место общения программистов C#
Anonymous
Компилятор C# не принимает значение NULL для свойства универсального типа, допускающего значение NULL.

Сообщение Anonymous »

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

public class ClassA
{
public TUid? Uid { get; set; }
}

public class ClassB : ClassA
{
public void Test()
{
ClassB dto = new ClassB();
dto.Uid = null;
}
}
Компилятор C# не принимает этот код C# в строке: dto.Uid = null, говоря, что

Невозможно преобразовать значение null в Guid, поскольку это тип значения, не допускающий значения NULL.

Не является TUid универсального типа в ClassA заменен на Guid в ClassB, поэтому в результате должно получиться Guid? вот так?

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

public Guid? Uid { get; set; }
Если я объявлю ClassA неуниверсальным

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

public class ClassA
{
public TUid? Uid { get; set; }
}
или передать общий параметр в качестве Guid?

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

public class ClassB : ClassA
тогда dto.Uid = null не вызывает никаких проблем.
Что такого в правилах вывода типа параметра, что сбивает с толку компилятор в первом примере?

Подробнее здесь: https://stackoverflow.com/questions/785 ... e-property

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