C# IEnumerable.ElementAt() неожиданно действует на OrderedEnumerableC#

Место общения программистов C#
Ответить Пред. темаСлед. тема
Anonymous
 C# IEnumerable.ElementAt() неожиданно действует на OrderedEnumerable

Сообщение Anonymous »

Во время пятого задания Advent of Code в этом году я наткнулся на такое странное поведение:
Если вы заказываете перечисляемое с помощью компаратора, который не проверяет транзитивное сравнение, метод ElementAt возвращает другой порядок, чем фактическое перечисление (кроме ElementAt(0) оно перенаправляется в метод First(), который учитывает порядок).
Пример кода, чтобы опробовать его самостоятельно (.NET 8.0):

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

public class UnitTest1
{
[Fact]
public void Test1()
{
List original = [2, 3, 1];
var sorted = original.Order(new MyComparer());
Assert.Equal("1,2,3", string.Join(',', sorted));    // succeeds, so it is sorted correctly, right? (nope)
var enumerator = sorted.GetEnumerator();
for (int i = 1; i  

Подробнее здесь: [url]https://stackoverflow.com/questions/79256552/c-sharp-ienumerable-elementat-acting-unexpectedly-on-an-orderedenumerable[/url]
Реклама
Ответить Пред. темаСлед. тема

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

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

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

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

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение

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