Я постоянно сталкиваюсь со случаями, когда мне нужен массив с равными значениями. Массив записей, который сам по себе действует как запись.
В настоящий момент я работаю над IIncrementalGenerator и для того, чтобы все промежуточные данные быть правильно запомнены и кэшированы и, таким образом, получить подлинно возрастающую производительность, все эти данные требуют равенства значений.
Я нашел множество людей, пишущих и предлагающих по сути одно и то же: «обернуть массив, пройти через него». все функции, добавьте переопределения для Равно и == и != и GetHashCode". GitHub Copilot и ChatGPT с радостью написали это для меня.
Неудивительно, что во всем вышеперечисленном (написанном людьми или роботами) опущено несколько методов массива или другие неудобные небольшие различия, которые дать ощущение победы энтропии.
Я также нашел документацию, в которой решительно заявляет, что ImmutableArray действительно делает это, и все же, когда я только что попробовал это, я определенно получил только равенство ссылок.
Я собираюсь написать или скопировать/вставить свой собственный тип ArrayWithValueEquality (скорее всего, скопировать и вставить), но такое ощущение, что я просто добавляю к хаос.
Есть ли более централизованный согласованный способ сделать это? Я упускаю что-то очевидное?
Подробнее здесь: https://stackoverflow.com/questions/790 ... e-equality
Есть ли в .NET официальный или стандартный класс для массивов, которые используют равенство значений, а не равенство ссы ⇐ C#
-
- Похожие темы
- Ответы
- Просмотры
- Последнее сообщение