if (disposing && (components != null))
Из других знаний о том, как работает класс, может быть вполне разумно, что components
, равное нулю, означает, что никакого другого удаления не требуется, но анализ, который выдает предупреждение, не поймет этого.
protected new void Dispose()
Это бесполезно, потому что оно не будет вызвано при утилизации.
Я бы, вероятно, выбрал:
protected override void Dispose(bool disposing)
{
if (disposing)
{
myPen?.Dispose();
myBrush?.Dispose();
// etc...
components?.Dispose();
}
base.Dispose(disposing);
}
Хотя учтите, что ?.
пока очень хорошая идеяиногда может также дать ложное предупреждение.OTOH, если вы делаете знаете, что components == null
означает, что удаление не требуется, тогда ваш исходный код в порядке, просто отключите предупреждение.