【T2a】新しいコンソールアプリのテンプレート(5/6) プロジェクトタイプ C#コンソールアプリ※ プロジェクト名 T2a
ソリューション名 PIT2
ターゲットフレームワーク .NET 8.0(長期的なサポート) 最上位レベルのステートメントを使用しない 使用する(チェックオフ)
注意 本ページの作業内容は 前のページまでの続き になっていることに注意せよ.先に前のページまでをすべて読み,指示されている作業を済ませてから本ページを読むこと. プロジェクトの作成作業については準備 を参照せよ. 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
クラスを追加してみよう.
【手順】プロジェクトにクラスを追加する Visual Studio のソリューションエクスプローラー上で,プロジェクト(またはプロジェクト内のフォルダ)を右クリック→「追加」→「クラス」をクリックする(_ ). ファイル名(クラス名)を訊かれるので,追加したいクラスの名前(.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