作成日: 2023/01/11
0

C#学習5日目 配列 一次元配列

今回はC#の一次元配列です。
今回から最初で構文や要点を簡潔にまとめてきたいと思います。

int型の配列を作る

int[]は配列の型 array1は任意の配列名 = new int[要素数]

int[] array1 = new int[7];

string型の配列を作る

string[]は配列の型 stringArrayは任意の配列名 = new string[要素数]

string[] stringArray = new string[5];

配列に値を入れる

配列のインデックスを指定して代入する。順番を変えたり飛ばして入れても良い。

stringArray[0] = "その一";
stringArray[1] = "その二";

配列に初期値を設定する

{}で初期値を設定する 要素数は推論されるため記述しない

int[] array2 = new int[] { 1, 3, 5, 7 };

配列の要素数は生成時に決定される
phpの配列のような要素数の自由度はない

省略した記述も可能

int[] array2 = { 1, 3, 5, 7, 9 };

記述がばらけないようにコーディング規約は最初で決めておいたほうが良さそう

画像オブジェクトも扱える

→ 後述Sampleの例を参照

データをまとめる方法として類似したもの

リスト
コレクション
まだ先の学習になるため頭に入れておくだけにする

一次元配列の演習

「やさしいC#」を参考にした習作
・本棚一段の画像を配列を使って縦に5段並べる
・配列を使って文字列3つを画像の上に載せる
本棚一段の画像
bookshelf.jpg
(記事の画像アップフォーマット上、jpg画像を使っていますが実際はBMP画像を使用)

作成したソースコード

using System.Windows.Forms;
using System.Drawing;

class SampleArray
{
    public static void Main()
    {
        Form fm = new Form();
        fm.Text= "配列の学習";

        //文字を配列に格納するサンプル(数値なども同様に適宜型を変えて利用できる)
        //配列内容は一つのラベルに表示する
        Label lb_comment = new Label();

        lb_comment.Width = 250; lb_comment.Height= 90;
        lb_comment.Left = 10; lb_comment.Top = 5;
        lb_comment.Font = new Font("Helvetica", 10, FontStyle.Bold);

        // 初期値を一行で入れ込む書き方
        string[] str = new string[3] { "C#の学習本", "Unity開発の解説書", "魔法の書"};
        foreach (string str2 in str)
        {
            lb_comment.Text += str2 + "\n";
        }
        //ラベルを透明にする
        lb_comment.BackColor = Color.Transparent;
        //lb_comment.Parent = fm;

        // 書棚一段の画像を配列に格納するサンプル
        PictureBox[] pbox = new PictureBox[5];

        for (int i = 0; i < pbox.Length; i++)
        {
            pbox[i] = new PictureBox();
            pbox[i].Image = Image.FromFile("F:\\images\\bookshelf.bmp");
            pbox[i].Top = i * pbox[i].Height;
            pbox[i].Width = 300;
            pbox[i].Parent = fm;

        }
        //一番上の段にラベルを表示する
        pbox[0].Controls.Add(lb_comment);
        Application.Run(fm);
    }
}

実行結果

rst_boos.jpg

おまけ ラベルの透明化

背景を透明にする指定
ラベル名.BackColor = Color.Transparent;
実はこれだけでは、ラベルの背景は、Formの下地色になってしまう。
これはラベルの親をFormにしているせいである。
ラベルの透かした部分を下の画像にしたい場合は・・・
画像オブジェクト.Controls.Add(ラベル名);
を追加すると良い。
以上の二つの使用例は上記習作ソースコードで確認できる。


これからゲームアプリとWindowsアプリを作りたい初心者です。 ゲームアプリとWindowsアプリ、共に経験ゼロです。 これからの体験が少しでも参考になれば幸いです。 目指す事 ・C言語学習→C#学習 ・Unity (C#) の勉強 ・Unityゲーム作成 ・Windowsアプリ(C#) 作成