Как 9.0 Record реализует равенство на основе стоимости для свойств объекта (например, массивы)?C#

Место общения программистов C#
Anonymous
Как 9.0 Record реализует равенство на основе стоимости для свойств объекта (например, массивы)?

Сообщение Anonymous »

Как 9.0 Запись реализует равенство на основе значений для свойств объекта (например, массивы)? < /p>
Я заметил, что два объекта записи того же типа имеют свойство временного метки, которое является массивом байтов, не распознаются как равные, несмотря на все байты, где одинаковые.

Код: Выделить всё

public record C
{
public byte[] Timestamp {get; set;}
}
https://sharplab.io/#v2:eylgtghgzglgpgj ... jrfsgl54nq /> будет реализован как < /p>
public virtual bool Equals(C other)
{
return (...) && EqualityComparer.Default.Equals(k__BackingField, other.k__BackingField);
}
< /code>
Использует EqualityComprer, который не использует SequenceEdavals, поэтому результат заключается в том, что две записи с одинаковым содержанием не равны. < /p>
using System.Collections.Generic;
using System.Diagnostics;

var a = new byte[1] { 1 };
var b = new byte[1] { 1 };

var isEqual = EqualityComparer.Default.Equals(a, b);

Debug.Print(isEqual.ToString()); // false
< /code>
Я думал, что записи будут реализовать равенство на основе стоимости для каждого свойства, но это, очевидно, по -прежнему основано на основе массивов, в частности. Я не на том пути или это так?

Подробнее здесь: https://stackoverflow.com/questions/649 ... s-like-arr

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