C#: Сравнить два массива

На заметку, чтобы не попадаться на эти грабли в будущем…

Есть два экземпляра класса: CurrentRule.RemotePorts и BackupRule.RemotePorts.
Сам класс примерно такой:

public class DetailedFile
{
  public ushort[]? RemotePorts { get; set; }
}

Я пытался сравнить изменения вот так:

if (CurrentRule.RemotePorts != BackupRule.RemotePorts)
{ //... }

Но всегда получал ответ, что удалённые порты были изменены, хотя это было не так.

На самом деле, при таком сравнении происходила проверка не содержимого самого массива, а ссылок на массив, а у разных массивов ссылки отличались.

 

Решение

Таким образом, нужно было сравнивать их так:

if (!Enumerable.SequenceEqual(CurrentRule.RemotePorts, BackupRule.RemotePorts))
{ //... }


Подписаться
Уведомление о
guest
0 Комментарий
Oldest
Newest Most Voted
Inline Feedbacks
View all comments