Игнорируйте частные переменные-члены при проверке равенства записей в C#.C#

Место общения программистов C#
Ответить
Anonymous
 Игнорируйте частные переменные-члены при проверке равенства записей в C#.

Сообщение Anonymous »

У меня есть определение записи, в котором я хотел бы проверять равенство только общедоступных/конкретных переменных-членов в определении записи. Я не нашел способа сделать это без создания собственной функции Equals, и я бы предпочел не делать этого, если есть другое, более приятное решение. Также приветствуются любые размышления о том, являются ли частные переменные-члены в записях плохим шаблоном или нет.
Пример записи, в которой равенство верно:
public record Test
{
public string Variable { get; init; }

public Test(string someValue)
{
Variable = someValue;
}
}

[Fact]
public void RecordTest()
{
var test1 = new Test("hello");
var test2 = new Test("hello");

Assert.Equal(test1, test2); // Passes
}

Пример записи, в которой хотелось бы, чтобы это было правдой, но это не так:
public record Test
{
// I believe this is causing it to fail, can it be ignored somehow?
private readonly List _list = new();

public string Variable { get; init; }

public Test(string someValue)
{
Variable = someValue;
_list.Add(someValue);
}
}

[Fact]
public void RecordTest()
{
var test1 = new Test("hello");
var test2 = new Test("hello");

Assert.Equal(test1, test2); // Fails
}


Подробнее здесь: https://stackoverflow.com/questions/676 ... s-in-c-sha
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «C#»