На заметку, чтобы не попадаться на эти грабли в будущем…
Есть два экземпляра класса: CurrentRule.RemotePorts и BackupRule.RemotePorts.
Сам класс примерно такой:
public class DetailedFile
{
public ushort[]? RemotePorts { get; set; }
}
Я пытался сравнить изменения вот так:
if (CurrentRule.RemotePorts != BackupRule.RemotePorts)
{ //... }
Но всегда получал ответ, что удалённые порты были изменены, хотя это было не так.
На самом деле, при таком сравнении происходила проверка не содержимого самого массива, а ссылок на массив, а у разных массивов ссылки отличались.
Решение
Таким образом, нужно было сравнивать их так:
if (!Enumerable.SequenceEqual(CurrentRule.RemotePorts, BackupRule.RemotePorts))
{ //... }