Ответ Кента точен, но чтобы ответить на ваш вопрос более четко о Решарпере и почему он жалуется:
В случае ссылочного типа (класса) будет достаточно проверки на нулевое значение, поскольку это считается значением по умолчанию для ссылочного типа. Однако для типа значения (такого как структура) «default» НИКОГДА не будет нулевым. Следовательно, поскольку ваши SerializableEntity и UnSerializableEntity являются обобщенными, вы можете указать, что они являются ссылочными типами или типами значений, поэтому нулевая проверка, вероятно, не соответствует вашим ожиданиям. Что вы хотели бы проверить, так это убедиться, что параметр - это то, чем вы действительно хотите заниматься. В случае ссылочного типа вы не хотите заниматься нулевыми объектами. В случае типа значения вы не хотите беспокоиться о «обнуленном» значении.
Например: допустим, вы указали DateTime в качестве типа данных, с которым имеете дело. Вы действительно хотите добавлять DateTimes, для которых не установлено никакого значения? Значением по умолчанию для DateTime является 1/1/0001, а не NULL, поэтому вам нужно проверить это, используя if (!Equals(e, default(SerializableEntity)))
, а не if (e != null)