情報応用演習Ⅰ(2024)

【T2a】新しいコンソールアプリのテンプレート(5/6)

プロジェクトタイプC#コンソールアプリ※
プロジェクト名T2a
ソリューション名PIT2
ターゲットフレームワーク.NET 8.0(長期的なサポート)
最上位レベルのステートメントを使用しない使用する(チェックオフ)

※「コンソールアプリ(.NET Framework)」ではないので注意せよ!

注意
  • 本ページの作業内容は 前のページまでの続き になっていることに注意せよ.
    • 先に前のページまでをすべて読み,指示されている作業を済ませてから本ページを読むこと.
    • プロジェクトの作成作業については準備を参照せよ.

2a-5. Program.cs におけるクラスの定義

Program.cs ファイル内でクラスやメソッドを定義するには,それらを書く場所に注意する必要がある. _は新しい Program.cs ファイルのフォーマットを示したものである.

新しいProgram.csのフォーマット

Program.cs ファイルに別のクラスを定義する場合,クラスの定義は Program.cs の末尾に置く必要がある. ためしに現状の Program.cs ファイルの先頭に_に示すクラス定義を追記してみよう.

Studentクラスの定義
1
2
3
4
5
6
class Student
{
    public int ID { get; set; } // 学籍番号
    public string Name { get; set; } // 名前
    public DateTime Birthday { get; set; } // 誕生日
}

すると_に示す通りエラーとなるはずである.

実行結果

_に示すフォーマットの通り,クラスの定義はProgram.csの末尾に置く必要がある. では先ほど追記したStudentクラスの定義を削除して,プログラムの末尾にクラスの定義を追記してみよう. すると今度は_のようにエラーとならないはずである. このようにして定義したクラスも,通常のクラスと同じくProgram.csの前半の処理の本体で使用することができる. 試しにProgram.csファイルの冒頭に_に示すコードを追記してみよう.

Program.csの内容
 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
// Studentクラスの変数を2つ作る.
var hoge = new Student()
{
    ID = 42,
    Name = "医療太郎",
    Birthday = new DateTime(2000, 4, 10),
};

var piyo = new Student()
{
    ID = 78,
    Name = "医療花子",
    Birthday = new DateTime(2000, 8, 20),
};

// ↑の変数の内容(IDとNameのみ)を表示する.
Console.WriteLine($"{hoge.ID}: {hoge.Name}");
Console.WriteLine($"{piyo.ID}: {piyo.Name}");

for (int i = 1; i <= 30; ++i)
{
    if (i % 3 == 0 && i % 5 == 0)
        Console.WriteLine("FizzBuzz");
    else if (i % 3 == 0)
        Console.WriteLine("Fizz");
    else if (i % 5 == 0)
        Console.WriteLine("Buzz");
    else 
        Console.WriteLine(i);
}//for

class Student
{
    public int ID { get; set; }
    public string Name { get; set; }
    public DateTime Birthday { get; set; }
}

実行結果は_のようになるはずである.

42: 医療太郎
78: 医療花子
1
2
Fizz
4
Buzz
Fizz
7
8
Fizz
Buzz
11
Fizz
13
14
FizzBuzz
16
17
Fizz
19
Buzz
Fizz
22
23
Fizz
Buzz
26
Fizz
28
29
FizzBuzz
実行結果

ただし_のような書き方はあまり推奨されない.このような書き方をするとクラスの定義が Program.cs ファイルの奥底に埋もれてしまい「○○というクラスを本体で使っているけどどこで定義されているんだ?」 といった事態に陥りやすい.Visual Studio のエディタの機能に頼ればクラスやメソッドの定義を探し出すことは容易ではあるが, C# ではクラスの定義はそのクラス名と同名の .cs ファイルに記述するのが一般的な書き方である. 先ほどの例で言えば,Studentクラスは Student.cs という名前のファイルに保存しておいた方が分かりやすく, また Program.cs の見通しもよくなる.そのため Program.cs にはクラスを定義せずに,できるだけそのクラスのための .cs ファイルを作ってその中にクラス定義を記述するようにしよう.

このことも実践しておこう.まず Program.cs 内の Studentクラスの定義を削除する

Program.csの変更内容
 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
var hoge = new Student()
{
    ID = 42,
    Name = "医療太郎",
    Birthday = new DateTime(2000, 4, 10),
};

var piyo = new Student()
{
    ID = 78,
    Name = "医療花子",
    Birthday = new DateTime(2000, 8, 20),
};

Console.WriteLine($"{hoge.ID}: {hoge.Name}");
Console.WriteLine($"{piyo.ID}: {piyo.Name}");

for (int i = 1; i <= 30; ++i)
{
    if (i % 3 == 0 && i % 5 == 0)
        Console.WriteLine("FizzBuzz");
    else if (i % 3 == 0)
        Console.WriteLine("Fizz");
    else if (i % 5 == 0)
        Console.WriteLine("Buzz");
    else 
        Console.WriteLine(i);
}//for

// ↓削除
//class Student
//{
//    public int ID { get; set; }
//    public string Name { get; set; }
//    public DateTime Birthday { get; set; }
//}

この状態では冒頭のStudentクラスを使用しているコードがエラーとなるはずである. 先ほど説明した通りクラスの定義はそのクラス名と同名のファイルに保存しておこう. プロジェクトにクラスを追加するには以下のようにする.今回はStudentクラスを追加してみよう.

  • 【手順】プロジェクトにクラスを追加する
    1. Visual Studio のソリューションエクスプローラー上で,プロジェクト(またはプロジェクト内のフォルダ)を右クリック→「追加」→「クラス」をクリックする(_).
    2. ファイル名(クラス名)を訊かれるので,追加したいクラスの名前(.csは省略可能)を入力して「追加」ボタンをクリックする(_).
    • するとプロジェクト内に↑で入力した名前の .cs ファイルが追加される(_).
クラスの追加

このようにすると,中身が空のクラス定義が書き込まれた Student.cs という名前のファイルがプロジェクトに追加されるはずである. このクラス定義に_のクラス定義を上書きしよう(_).このクラス定義はプロジェクトと同名の名前空間, すなわちnamespace プロジェクト名 { ~ }の中に書かれているため,この中で記述されている クラスをProgram.cs内で使用するには,Program.csファイルの冒頭に_に示すusingディレクティブを追記する必要がある.

必要なusingディレクティブ
using プロジェクト名;

今回のプロジェクト名T2aであるため,StudentクラスをProgram.cs 内で使用するためにはファイルの冒頭にusing T2a;と追記する必要がある. 名前空間に関しては詳細はここでは割愛するが,クラスの「名字」のようなものだと思えばよい.詳しくは,以下を参照するとよいだろう.

ここまでの説明を正しく読み取れていれば,Program.cs ファイルは_のようになっているはずである.

Program.csの変更内容
 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
using T2a; // 追記

var hoge = new Student()
{
    ID = 42,
    Name = "医療太郎",
    Birthday = new DateTime(2000, 4, 10),
};

var piyo = new Student()
{
    ID = 78,
    Name = "医療花子",
    Birthday = new DateTime(2000, 8, 20),
};

Console.WriteLine($"{hoge.ID}: {hoge.Name}");
Console.WriteLine($"{piyo.ID}: {piyo.Name}");

for (int i = 1; i <= 30; ++i)
{
    if (i % 3 == 0 && i % 5 == 0)
        Console.WriteLine("FizzBuzz");
    else if (i % 3 == 0)
        Console.WriteLine("Fizz");
    else if (i % 5 == 0)
        Console.WriteLine("Buzz");
    else 
        Console.WriteLine(i);
}//for

ここまで書けたら実行してみよう.実行結果は_と同じになるはずである(_).

実行結果

ここまで確認してから次に進もう.

Last updated on 2024-04-26
Published on 2024-04-26

Powered by Hugo. Theme by TechDoc. Designed by Thingsym.