情報応用演習Ⅰ(2024)

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

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

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

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

2a-6. Program.csにおけるメソッドの定義

Program.cs ファイル内で静的メソッドなどを定義したい場合は,C#にはもともとメソッド内に別のメソッドを定義する ローカル関数(参考1参考2) と呼ばれる仕組みがあるため,それを用いればよい. ローカル関数は図2a-5-1に示したように,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
38
39
40
41
42
43
44
using T2a;

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

// 特に意味のないメソッド1
static void DoSomething()
{
    Console.WriteLine("DoSomething() is called!");
}

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}");

// 特に意味のないメソッド2
static int DoAnything(int a, string b) 
{
    Console.WriteLine($"DoAnything() is called!(a = {a},b = \"{b}\")");

    return a * b.Length;
}

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

_ではDoSomething()メソッド(10~14行目)とDoAnything()メソッド(26~32行目)という 二つのメソッドを追記している.これらのメソッドはどちらもコンソール(黒画面)に表示を出すだけの 特に意味のないメソッドである.

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

実行結果

せっかくメソッドを追記したのに,これらのメソッドが動作していないことが分かるだろうか. しかしこれは当然の結果である.なぜなら定義したメソッドは呼び出さなければ動作しないためである. このことは,今までのプログラミング科目の中ですでに十分に学習しているはずである. _ではメソッドの定義を Program.cs の中に置いただけで呼び出していないため,これらのメソッドによる 表示があらわれていないのである.

このようにメソッドの定義は Program.cs の本体内のいかなる場所にも置くことができるが,プログラム本体の処理と メソッドの定義が入り乱れてしまうと大変読みにくくなる.このためプログラムの読みやすさを考慮して, メソッドの定義は 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
38
39
40
41
42
43
44
45
46
47
48
49
50
51
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}");

DoSomething();        // メソッドの呼び出し
DoAnything(1,"xyzzy"); // メソッドの呼び出し

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

// ↑ここまで Main() の処理
////////////////////////////////////////////////////////
// ↓ここからメソッドの定義

// 特に意味のないメソッド1
static void DoSomething()
{
    Console.WriteLine("DoSomething() is called!");
}

// 特に意味のないメソッド2
static int DoAnything(int a, string b) 
{
    Console.WriteLine($"DoAnything() is called!(a = {a},b = \"{b}\")");

    return a * b.Length;
}

Program.csファイルの末尾,39~52行目にDoSomething()メソッドとDoAnything()メソッドの定義をまとめた. そして,20~21行目でこれらのメソッドを呼び出している. ここまで書けたら実行してみよう._のようになるはずである.

42: 医療太郎
78: 医療花子
DoSomething() is called!
DoAnything() is called!(a = 1,b = "xyzzy")
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
実行結果

ここまでの動作を確認したら一つ目のチュートリアルは完了である. 以降の作業における混乱を防ぐため,次に進む前に Visual Studio のエディタをすべて閉じておこう.Visual Studio のいずれかのエディタのタブを右クリックして 「すべてのドキュメントを閉じる」をクリックすれば,エディタをすべて閉じることができる

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

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