Object to nullable object

207
28 ноября 2017, 19:39

Есть поле, которое используется в свойстве. Появилась необходимость переделать Product Product в Nullable Product. Но не могу никак привести к нему не nullable поле _product. Есть ли быстрые и красивые способы это сделать, без дополнительных классов, Activator.CreateInstance, и т.д?

private Product _product;
public Product? Product //The type 'Product' must be a non-nullable value type in order to use it as parameter 'T' in the generic type or method 'Nullable<T>'
{
    get
    {
        if (_productId == 0) return null;
        if (_product == null)
        {
            //если _product тоже поменять тип, то будет ругаться здесь.
            _product = ProductsCollection.Instance[_productId];
        }
        return _product; // Cannot implicitly convert type 'namespace.Product' to 'namespace.Product?'. An explicit conversion exists (are you missing a cast?)
        return (Product?)_product; //The type 'Product' must be a non-nullable value type in order to use it as parameter 'T' in the generic type or method 'Nullable<T>'
    }
}
Answer 1

если Product - это класс, то ему не нужен ? он и так nullable, то есть может принимать значение null.

То есть первоначальный код вполне сработает:

private Product _product;
public Product Product //The type 'Product' must be a non-nullable value type in order to use it as parameter 'T' in the generic type or method 'Nullable<T>'
{
    get
    {
        if (_productId == 0) return null;
        if (_product == null)
        {
            _product = ProductsCollection.Instance[_productId];
        }
        return _product; 
    }
}
READ ALSO
Angular 2, ASP.Net Core и базовый CRUD через angular-сервис

Angular 2, ASP.Net Core и базовый CRUD через angular-сервис

ПриветствуюПробую себя в Angular 2 Asp

253
Как передать запрос к бд с формы?

Как передать запрос к бд с формы?

Подскажите, как правильно сделать запрос к БД с формыКак я понимаю, делать это надо с помощью инъекций:

230
Как проверить &ldquo;пойманные&rdquo; клавиши (hooked keys) в C#?

Как проверить “пойманные” клавиши (hooked keys) в C#?

Пишу простую (со своей стороны) программу, она состоит из готового пакета KeystrokeAPI, который ловит нажатые клавиши и выводит их на консоль, так...

207
Конвертация DateTime(string)

Конвертация DateTime(string)

Есть список дат с несколькими культурами языков таких как "24 августа 2017" и "4 jenuery 2017" нужно конвертировать в DateTime, как сделать одну культуру...

242