Bài tập C#

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

C#
Chạy code →
Program.cs
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));
}
Kết quả khi chạy
True

Luyện tập với trình gỡ lỗi

Đặt breakpoint ở một phép gán hoặc điều kiện quan trọng, bấm Debug và xem giá trị các biến cục bộ (local variable) trước khi bước sang dòng tiếp theo.

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.

Tất cả thử thách