0Pricing
C# Academy · レッスン

配列、スライス、List<T>、Dictionary<TKey,TValue>

配列を作成して使い、スライスをコピーします。また、動的な項目の管理やキーによる検索にList とDictionary を使います。

「配列、スライス、List<T>、Dictionary<TKey,TValue>」はCoddyKit上の無料C# Academyレッスンです。 これはレッスン1/3です。 下記で完全なレッスンを無料で読むことができます。その後、ブラウザ内の組み込みコードエディタと24時間対応のAIチューターでハンズオン演習できます。 これはC# Academy学習パスの一部であり、ウェブとCoddyKitアプリ全体で進捗が同期されます。 C# Academyコースには全3レッスンが含まれています。

レッスンの概要

目標:適切なコンテナーを選択します。

  • Array:固定サイズで高速なインデックスアクセス
  • List<T>:サイズが増減する
  • Dictionary<TKey,TValue>:キーによる高速な検索
  • コピーによる単純な配列スライス

Array の基礎

配列は固定サイズで、インデックスによるアクセスが可能です。Lengthとゼロベースのインデックスを使用します。

using System;

public class Program
{
  public static void Main(string[] args)
  {
    int[] nums = new int[] { 10, 20, 30 };
    Console.WriteLine("Length = " + nums.Length);
    Console.WriteLine("First = " + nums[0]);
    Console.WriteLine("Last = " + nums[nums.Length - 1]);

    // Update by index
    nums[1] = 25;
    Console.WriteLine("Updated middle = " + nums[1]);
  }
}

コピーによる配列スライス

C# 6 には範囲演算子がありません。Array.Copyを使用する小さなヘルパーを作成して、スライスをコピーします。

using System;

public class Program
{
  // Copy a slice [start, start+count) into a new array
  public static int[] Slice(int[] src, int start, int count)
  {
    int[] dst = new int[count];
    Array.Copy(src, start, dst, 0, count);
    return dst;
  }

  public static void Main(string[] args)
  {
    int[] data = new int[] { 5, 6, 7, 8, 9 };
    int[] middle = Slice(data, 1, 3); // {6,7,8}
    Console.WriteLine("Slice len=" + middle.Length + " first=" + middle[0] + " last=" + middle[middle.Length - 1]);
  }
}

List<T> の基礎

List<T>は自動的にサイズを変更します。Add/Insert/RemoveとCountを使用します。

using System;
using System.Collections.Generic;

public class Program
{
  public static void Main(string[] args)
  {
    List<string> items = new List<string>();
    items.Add("apple");
    items.Add("banana");
    items.Insert(1, "kiwi"); // apple, kiwi, banana
    Console.WriteLine("Count = " + items.Count);
    Console.WriteLine("Second = " + items[1]);

    items.Remove("apple");
    Console.WriteLine("After remove, first = " + items[0]);
  }
}

Dictionary の基礎

Dictionaryはキーと値のペアを格納します。安全に検索するには、ContainsKey/TryGetValueを使用します。

using System;
using System.Collections.Generic;

public class Program
{
  public static void Main(string[] args)
  {
    Dictionary<string, int> ages = new Dictionary<string, int>();
    ages["Ada"] = 28;           // add
    ages["Alan"] = 35;          // add
    ages["Alan"] = 36;          // update

    int value;
    if (ages.TryGetValue("Ada", out value))
    {
      Console.WriteLine("Ada age = " + value);
    }

    Console.WriteLine("Has Grace? " + ages.ContainsKey("Grace"));
  }
}

コレクションの選択

選択基準:

  • 固定サイズで数値インデックスを使う場合はArray
  • サイズが変化する場合はList<T>
  • 一意のキーがある場合はDictionary<K,V>
  • Array.Copyヘルパーでスライスをコピーする

キーによる検索に適したコレクション

確認:一意のキーによる高速な検索が必要な場合、どのコレクションが最適ですか?

まとめ

まとめ:配列は固定サイズです。Array.Copyでスライスをコピーします。動的なリストにはList<T>、キーによる高速な検索にはDictionary<K,V>を使用します。

よくある質問

「配列、スライス、List<T>、Dictionary<TKey,TValue>」レッスンは無料ですか?

はい。「配列、スライス、List<T>、Dictionary<TKey,TValue>」の完全なテキストはこのウェブで無料で読めます。インタラクティブに演習し(組み込みコードエディタと24時間対応のAIチューター)、C# Academyコースの残りをアンロックするには、CoddyKit PROにアップグレードしてください。 C# Academyコースには全3レッスンが含まれています。

「配列、スライス、List<T>、Dictionary<TKey,TValue>」で何を学びますか?

配列を作成して使い、スライスをコピーします。また、動的な項目の管理やキーによる検索にList とDictionary を使います。 ブラウザで直接実行するハンズオンコードでC# Academyを演習し、24時間対応のAIチューターがレッスンを進める中での質問に答えます。

C# Academyを始めるのに経験は必要ですか?

事前経験は必要ありません。CoddyKitのC# Academyは初級者から上級者向けに構成されているため、ここから始めるか最初から始めて、自分のペースで進むことができます。 これはレッスン1/3です。

「配列、スライス、List<T>、Dictionary<TKey,TValue>」レッスンにはどのくらい時間がかかりますか?

ほとんどのCoddyKitレッスンは約5~10分かかります。各レッスンはコンパクトでインタラクティブなので、着実に進歩し、ウェブとアプリ全体で正確に前回の場所から再開できます。

このC# Academyレッスンでコードを書いて実行できますか?

はい。すべてのC# Academyレッスンに組み込みコードエディタが含まれているため、ブラウザでリアルコードを書いて実行し、即座のAIフィードバックを取得できます。ローカル設定は不要です。

このコースのすべてのレッスン

  1. 配列、スライス、List 、Dictionary
  2. foreachのパターンとコレクション初期化子
  3. LINQプレビュー:Where、Select、OrderBy、Take/Skip、遅延実行
← C# Academyに戻る