Donc je sais que Find()
est seulement un List<T>
alors que First()
est une extension pour tout IEnumerable<T>
. Je sais aussi que First()
retournera le premier élément si aucun paramètre n'est passé, alors que Find()
entraînera une exception. Enfin, je sais que First()
lèvera une exception si l'élément n'est pas trouvé, alors que Find()
retournera la valeur par défaut du type.
J'espère que cela dissipe toute confusion sur ce que je demande réellement. Il s'agit d'une question d'informatique qui traite de ces méthodes au niveau du calcul. J'ai compris que IEnumerable<T>
Les extensions ne fonctionnent pas toujours comme on pourrait s'y attendre sous le capot. Voici donc la question, et je veux dire d'un point de vue "proche du métal" : Quelle est la différence entre Find()
y First()
?
Voici un code qui fournit des hypothèses de base pour répondre à cette question.
var l = new List<int> { 1, 2, 3, 4, 5 };
var x = l.First(i => i == 3);
var y = l.Find(i => i == 3);
Y a-t-il une réelle différence de calcul entre la façon dont First()
y Find()
découvrir leurs valeurs dans le code ci-dessus ?
Note : Ignorons les choses comme AsParallel()
y AsQueryable()
pour le moment.
0 votes
First() va créer un énumérateur, Find() ne le fera pas.