Итак, недавно мы установили расширение 'Clr Heap Allocation Analyzer' для Visual Studio, чтобы проверить наш код на наличие проблем с выделением кучи, вызванных упаковкой, среди прочего.Мы столкнулись с предупреждением «HAA0102», которое дает следующее описание:
Не переопределенный вызов виртуального метода для типа значения добавляет бокс или ограниченную инструкцию
Это относится к проверке условий в следующей строке кода:
if(instanceType == Enums.Tags.DialoguePanel.ToString())
{
// Some code handling
}
else if(instanceType == Enums.Tags.InfoPanel.ToString())
{
// Some other code handling
}
Для контекста Enums.Tags.DialoguePanel ссылается на следующее объявление enum:
public enum Tags
{
InfoPanel,
DialoguePanel,
WarningPanel
}
Теперь я понимаючто enum
является типом значения и, следовательно, Enums.Tags.DialoguePanel
является типом значения.Я также понимаю, что к .ToString()
относится, в основном, к ссылочному типу (строке).
Мой вопрос заключается в том, нужно ли проводить рефакторинг таких линий, чтобы избежать упаковки (и если да, то как?) Или лучше подавить это предупреждение для этих конкретных случаев?Пожалуйста, имейте в виду, что нам нужно сохранить типы перечислений.Они используются в качестве контролируемого способа предоставления пользовательских опций (в раскрывающемся списке).Рефакторинг тех, которые относятся к другому типу, потребует МНОГО работы (что хорошо, если производительность будет значительно увеличена).
Заранее спасибо!