public void DoFoo<T>(T foo) where T : ISomeInterface<T>
{
//possible compare of value type with 'null'.
if (foo == null) throw new ArgumentNullException("foo");
}
Я намеренно проверяю только null, потому что я не хочу ограничивать ValueType
от его default(T)
. Мой код компилируется и отлично работает в этом режиме (ReSharper жалуется, но не CodeAnalysis). Хотя я действительно удивляюсь:
- Существует ли более стандартный способ справиться с этой ситуацией?
- Есть ли вероятность возникновения проблемы из этого?
- Что действительно происходит под капотом, когда я делаю вызов и передаю тип значения?