2016-02-12 2 views
1

Я в такого рода местоЧто такое C++ CLI эквивалент vb's Nothing?

generic <typename ItemType> where ItemType : ItemBase 
public ref class Container { 
    ItemType GetItem(int i) { 
     ... 
     if (someSpecialCondition) return ??? 
     ... 
    } 
}; 

Я хочу вернуть эквивалент Vb в «ничего», но не могу понять, синтаксис для этого. Это не похоже на null или nullptr, я так много знаю.

ответ

2

Это довольно неинтуитивно для дженериков, обратите внимание, что это не может быть nullptr, если параметр type является классом значений. Он также не соответствует спецификации языка, которая обещает, что nullptr действителен, когда тип ограничен ref class.

Значение по умолчанию для типа T: T(). Так что:

ItemType GetItem(int i) { 
    ... 
    if (someSpecialCondition) return ItemType(); 
    ... 
} 

Который производит nullptr если ItemType тип ссылки и значение по умолчанию (все члены нулевого инициализирован), когда ItemType является типом значения. То же самое, что Nothing делает в VB.NET

Смежные вопросы