C#のList<T>でタスクの一覧を管理する
このレッスンでは、レコードとList<T>でタスクの一覧を管理し、まだ終わっていないタスクを取り出します。
はじめに
レコードとList<T>のようなジェネリックなコレクションは、メモリ上のデータモデルをすっきり作るのにぴったりです。各タスクはタイトルと完了状態を持つレコードで表し、List<TaskItem>がすべてのタスクを保存します。
FindAllメソッドはラムダの形の条件を受け取り、条件を満たすタスクだけを集めた新しいリストを返します。ここではDoneがfalseのタスクです。結果は型の情報を持ったままのTaskItemオブジェクトなので、そのままtask.Titleを使えます。プログラムはLearn eventsと表示します。
動きで理解する
ボタンでリストを変更し、インデックスが更新される様子を見ましょう。startとstopを動かすと、スライスで取り出される要素がわかります。
実行できる C# の例
C#
Program.cs
using System;
using System.Collections.Generic;
record TaskItem(string Title, bool Done);
class Program
{
static void Main()
{
var tasks = new List<TaskItem> { new("Learn LINQ", true), new("Learn events", false) };
foreach (var task in tasks.FindAll(task => !task.Done)) Console.WriteLine(task.Title);
}
}
Learn eventsデバッガーで練習する
大事な代入や条件にブレークポイントを置いて Debug を押し、次の行に進む前にローカル変数の値を確かめましょう。
チャレンジで練習する
このレッスンの内容を使って実際の問題を解きましょう。各チャレンジはブラウザで動き、すぐにテストされ、AI のレビューも受けられます。
すべてのチャレンジ