Bu nedenle, bir ForEach uzantı yönteminin LINQ uzantı yöntemleri gibi bir değer döndürmediği için uygun olmadığı hakkında birçok yorum yapılmıştır. Bu gerçek bir ifade olmakla birlikte, tamamen doğru değildir.
LINQ genişletme yöntemlerinin tümü, birlikte zincirlenebilmeleri için bir değer döndürür:
collection.Where(i => i.Name = "hello").Select(i => i.FullName);
Ancak, LINQ'nun genişletme yöntemleri kullanılarak uygulanması, genişletme yöntemlerinin aynı şekilde kullanılması ve bir değer döndürmesi gerektiği anlamına gelmez . Bir değer döndürmeyen ortak işlevselliği ortaya çıkarmak için bir uzantı yöntemi yazmak son derece geçerli bir kullanımdır.
ForEach ile ilgili özel tartışma, uzatma yöntemleriyle ilgili kısıtlamalara dayanarak (yani bir uzatma yönteminin aynı imzayla devralınan bir yöntemi asla geçersiz kılmayacağı), özel genişletme yönteminin çığır açan tüm sınıflarda mevcut olduğu bir durum olabilir. IEnumerable > Liste hariç >. Bu, yöntemler, genişletme yönteminin mi yoksa devralma yönteminin mi çağrıldığına bağlı olarak farklı davranmaya başladığında karışıklığa neden olabilir.<T
<T