手順 2: Random オブジェクトおよびアイコンのリストの追加
2 つの new ステートメントを使用して 2 つのオブジェクトを作成し、それらをフォームに追加する必要があります。1 つ目は、計算クイズ ゲームで使用したオブジェクトに似た Random オブジェクトです。2 つ目は、新しいオブジェクトの List オブジェクトです。
Random オブジェクトおよびアイコンのリストを追加するには
リストを作成する次のコードを追加する前に、そのしくみについて考えます。
Public Class Form1 ' Use this Random object to choose random icons for the squares Private random As New Random ' Each of these letters is an interesting icon ' in the Webdings font, ' and each icon appears twice in this list Private icons = New List(Of String) From {"!", "!", "N", "N", ",", ",", "k", "k", "b", "b", "v", "v", "w", "w", "z", "z"}
public partial class Form1 : Form { // Use this Random object to choose random icons for the squares Random random = new Random(); // Each of these letters is an interesting icon // in the Webdings font, // and each icon appears twice in this list List<string> icons = new List<string>() { "!", "!", "N", "N", ",", ",", "k", "k", "b", "b", "v", "v", "w", "w", "z", "z" };
ソリューション エクスプローラーで Form1.cs を右クリックし、メニューの [コードの表示] をクリックしてコード エディターに移動します。前の手順で示されているコードの入力を開始します。Visual C# コードを記述している場合は、必ずクラス宣言 (public partial class Form1 : Form) のすぐ後の、始め中かっこの後にコードを配置してください。Visual Basic コードを記述している場合は、クラス宣言 (Public Class Form1) のすぐ後にコードを配置します。
List オブジェクトを追加するときに、表示される IntelliSense ウィンドウを注意して見ます。以下は Visual C# の例です (Visual Basic でリストを追加する場合も同様のテキストが表示されます)。
IntelliSense ウィンドウ
[!メモ]
小さなセクションのコードを見ると、より容易に理解できます。プログラムでは、List オブジェクトを使用して多数の項目を追跡できます。リストでは、数値、true/false 値、テキスト、またはその他のオブジェクトを保持できます。他の List オブジェクトを保持している List オブジェクトを持つこともできます。リスト内の項目は要素と呼ばれ、各リストで保持される要素は 1 種類のみです。そのため、数値のリストでは数値しか保持できません。数値のリストにテキストを追加することはできません。また、true/false 値のリストに数値を追加することもできません。
[!メモ]
new ステートメントを使用して List オブジェクトを作成するときは、リストで何を保持するのかを示す必要があります。IntelliSense ウィンドウの上部のツールヒントがリスト内の要素の種類を示すのはそのためです。また、List<string> (Visual C# の場合) および List(Of String) (Visual Basic の場合) は、このこと (つまり、List オブジェクトは文字列を保持するということ) を示しています。string は、プログラムがテキストの格納に使用するものであり、IntelliSense ウィンドウの右側のツールヒントが示しているものです。
Visual Basic では最初に一時配列を作成する必要があるのに対し、Visual C# では 1 つのステートメントでリストを作成できる理由を考えます。これは、Visual C# 言語にはコレクション初期化子があるためです。Visual Basic 2010 では、コレクション初期化子を使用できます。ただし、以前のバージョンの Visual Basic との互換性を確保するため、先に示されているコードを使用することをお勧めします。
[!メモ]
new ステートメントでコレクション初期化子を使用した場合は、新しい List オブジェクトを作成すると、プログラムによって、中かっこ内に示されているものがリストに格納されます。ここでは、icons という名前の文字列のリストが生成され、そのリストは、16 の文字列を格納できるように初期化されます。これらの各文字列は、1 つの文字であり、それらすべてがラベルで表示されるアイコンと対応しています。よって、ゲームには、感嘆符のペア、大文字の N のペア、コンマのペアなどが存在することになります。List オブジェクトは、TableLayoutPanel のセルごとに 1 つの、合計 16 の文字列を保持することになります。
[!メモ]
Visual Basic では、結果は同じになりますが、最初に一時配列に文字列が格納されてから、この一時配列が List オブジェクトに変換されます。配列はリストと似ていますが、配列は固定サイズで作成されるなどの例外があります。リストは、必要に応じて縮小および拡大できます。このプログラムではこの点が重要になります。
続行または確認するには
チュートリアルの次の手順に進むには、「手順 3: 各ラベルへのランダムなアイコンの割り当て」を参照してください。
チュートリアルの前の手順に戻るには、「手順 1: プロジェクトの作成とフォームへのテーブルの追加」を参照してください。