Hãy thực hiện phương thức Where trong C# và giải thích đoạn mã đó?

{{FormatNumbertoThousand(model.total_like)}} lượt thích
337 lượt xem
C#/.Net master
public static IEnumerable<T> Where<T>(this IEnumerable<T> items, Predicate< T> prodicate)
{
   foreach(var item in items)
   {
      if (predicate(item))
      {
         // for lazy/deffer execution plus avoid temp collection defined
         yield return item;
      }
   }
}

Từ khóa yield thực sự làm khá nhiều việc ở đây. Nó tạo ra một bộ máy trạng thái "dưới vỏ bọc" ghi nhớ vị trí của bạn trong mỗi chu kỳ bổ sung của chức năng và chọn từ đó.

Hàm trả về một đối tượng thực thi IEnumerable<T> interface. Nếu một hàm đang gọi bắt đầu foreach-in đối tượng này, thì hàm sẽ được gọi lại cho đến khi nó "yield" kết quả dựa trên một số predicate. Đây là cú pháp được giới thiệu trong C# 2.0. Trong các phiên bản trước, bạn phải tạo các đối tượng IEnumerableIEnumerator của riêng mình để thực hiện những công việc như thế này.

{{login.error}}