C#プログラミングメソッドが分からない件【C#学習メモ】

メソッドやらが分からないので「C#の絵本」81ページに記載してある例文を見て何とか理解しようと頑張ってみます。

using System;

class Cat
{
    string name;
    string place;
    int age;

    public void setData(string n, string p, int a)
    {
        name = n;
        place = p;
        age = a;

    }
    public void print()
    {
        Console.WriteLine(place + ":" + name + " " + age + "歳");
    }
    public void print(string p, int a)
    {
        place = p;
        Console.WriteLine(place + ":猫は" + a + "匹です");
    }
    public void print(string variety)
    {
        Console.WriteLine(place + ":" +name+"  "+ age + "歳"+ variety);
    }
}

class Pet
{
    static void Main()
    {

        Cat cat1 = new Cat();
        Cat cat2 = new Cat();
        Cat cat3 = new Cat();

        cat1.setData("ロビン", "うち", 10);
        cat2.setData("ちび", "となり", 14);

        cat1.print("雑種");
        cat1.print();
        cat1.print("うら",0);

    }
}

(株)アンク(2017)『C#の絵本 [C#の絵本第2版] C#が楽しくなる新しい9つの扉』発行所(81ページ)

3行目クラスCatの定義
5行目string型の文字列nameの宣言
6行目string型の文字列placeの宣言
7行目int型の整数ageの宣言

9行目setDataという名前のメソッドの定義。戻り値の型はvoidn,pというstring型の文字列と、aというint型の変数が、引数*1の値を受け取りますよー。
11行目文字列nameにはnを代入します!
12行目文字列placeにはpを代入します!
13行目変数ageにはaを代入します!

16行目printという名前の文字を表示するメソッドの定義。このメソッドには引数も戻り値もないです。

17行目printという名前の文字を表示するメソッドの定義。string型のpint型のaという変数が、引数の値を受け取りますよー。

18行目printという名前の文字を表示するメソッドの定義。string型のvarietyという文字列が、引数を受け取りますよー。

31行目クラスPetの定義。

33行目Mainという名前の静的なメソッドの定義*2

36行目Catクラスのcat1というオブジェクトを作ります。*3
37行目Catクラスのcat2というオブジェクトを作ります。
38行目Catクラスのcat2というオブジェクトを作ります。

40行目Catクラスのcat1というオブジェクトの9行目のsetDataというフィールドに()内の引数を渡している。
41行目cat2というオブジェクトの9行目のsetDataというフィールドに()内の引数を渡している。

43行目36行目で作ったCatクラスのcat1というオブジェクトのprintというフィールドに()内の引数を渡す。対応するフィールドは25行目のpublic void print(string variety)です。variety="雑種"になります。
このとき、40行目のcat1の引数がsetDataに渡されています。それから{}内の処理を行います。
44行目対応するフィールドは16行目のpublic void print()です。
45行目対応するフィールドは20行目のpublic void print(string p, int a)です。p="うら"a=0になります。

以下は実行結果です。
f:id:meryl_2525:20190620205825p:plain



ちなみに、22行目を消したら、実行結果は以下のようになりました。(エラーは出ませんでした。)
f:id:meryl_2525:20190620210839p:plain



こうやって1行ずつ意味を調べていくと、
なんとなーくわかってきた気がしました。

*1:処理の材料のこと

*2:Mainメソッドはstaticらしい

*3:オブジェクトの作り方

(クラス名) (オブジェクト名) =new (クラス名)();