Search
Write a publication
Pull to refresh

Comments 6

Без подглядывания сразу увидел FirstOrDefault - не возвращает null как значение по умолчанию - для int это будет 0 - я прав?

Да, всё верно. FirstOrDefault возвращает default(TSource), а не null. TSource будет соответствовать типу элементов перечисления. В данном случае это int. Следовательно, если результирующая выборка будет пустой, в ind запишется 0, а не null. Это приведёт к тому, что проверка на null c использованием оператора '??' окажется бессмысленной. Как итог — метод вернёт 0 вместо -1.

1 место потенциально ещё две проблемы имеет - NRE если передали null и сортировка до where - это тоже плохо, хоть и конкретно на листе возможно ведёт себя корректно =)

На самом деле, весь этот метод вообще можно переписать в одну строку:

private static int CalculateClosestSpaceIndex(List<int> spaceIndices,  int firstMatchIndex) =>
     spaceInices.Where(item => item < firstMatchIndex).Cast<int?>().Max() ?? -1; 

"Null check" в приватных методах делают редко - обычно подобная проверка происходит явно или неявно выше по стеку.

Sign up to leave a comment.