If you look at the documentation: MSDN
] it explains that:
The first element that matches the conditions defined by the specified predicate, if found; otherwise, the default value for type T.
When searching a list containing value types, make sure the default value for the type does not satisfy the search predicate. Otherwise, there is no way to distinguish between a default value indicating that no match was found and a list element that happens to have the default value for the type. If the default value satisfies the search predicate, use the FindIndex method instead.
Basically, it returns the default value when it runs out of matches - for a reference type, that's