Tự viết phương thức mở rộng cho dãy dữ liệu trong C#
Trong bài học này, bạn sẽ viết phương thức mở rộng None() cho mọi dãy dữ liệu, kiểm tra xem không có phần tử nào thỏa mãn điều kiện.
Giới thiệu
Phương thức mở rộng giúp bổ sung những thao tác có tên gọi dễ hiểu cho các kiểu có sẵn. Ở đây, bạn sẽ viết phương thức None, ngược lại với Any của LINQ: trả về true khi không có phần tử nào thỏa mãn điều kiện.
Phương thức None<T> mở rộng cho IEnumerable<T>, nên dùng được với mảng, List và mọi dãy dữ liệu khác. Vòng lặp duyệt từng phần tử và trả về false ngay khi gặp phần tử thỏa mãn điều kiện, nếu duyệt hết thì trả về true. Mảng [1, 3, 5] không có số chẵn nào nên kết quả là True.
Ví dụ C# chạy được
using System;
using System.Collections.Generic;
static class EnumerableExtensions
{
public static bool None<T>(this IEnumerable<T> source, Func<T, bool> predicate)
{
foreach (T item in source) if (predicate(item)) return false;
return true;
}
}
class Program
{
static void Main() => Console.WriteLine(new[] { 1, 3, 5 }.None(number => number % 2 == 0));
}
TrueLuyện tập với trình gỡ lỗi
Luyện tập với thử thách
Áp dụng kiến thức của bài học này để giải một bài toán thực tế. Mỗi thử thách chạy ngay trên trình duyệt, có kiểm thử tức thì và AI nhận xét.
- Loại Bỏ Phần Tử Trùng Lặp Chỉ giữ lại lần xuất hiện đầu tiên của mỗi giá trị. Dễ
- Chia danh sách thành từng phần Cắt một danh sách thành các nhóm liên tiếp có kích thước cố định, với nhóm cuối cùng ngắn hơn nếu cần. Dễ