【C#】メソッド・プロパティ・フィールドの使い方

f:id:okoko0000:20211207080606p:plain
今回はメソッド、プロパティ、フィールドについて書いていきます。
私の備忘録も兼ねております。


それではまずは下記コードを見ていきましょう。

サンプルコード

using System;


namespace sample
{
	//クラス
	public class test
	{
		//フィールド
		private int _age;


		//プロパティ
		public int Age
		{
			get { return this._age; }
			set { this._age = value; }
		}



		public void Method()
		{
			//プロパティから読み取り①
			Console.WriteLine(Age);

			//プロパティ(set)に書き込み
			Age = 29;
			//プロパティから読み取り②
			Console.WriteLine(Age);
		}

		
		//Mainメソッド
		static void Main(string[] args)
		{
			//インスタンスメソッド
			var sc = new test();
			sc.Method();

		}
	}
}

サンプルコードの大まかな流れとしては

プロパティ・フィールド・メソッドを定義

プロパティのset値を渡す

メソッドが呼ばれる

プロパティのgetが値を渡す。

メソッドが実行される
書かれている所はバラバラですが、上記のようにデータを渡しています。

エントリーポイント(Mainメソッド)にてインスタントメソッドで「Method()」を呼び出し、
1つ目の「Console.WriteLine(Age)」は0で出力
Age = 29でプロパティにsetに値を渡しているので、2つ目では29で出力

0
29

という出力結果になります。

これが大規模なソースコードになると、フィールド・プロパティのみのファイルをメソッドを使用する際に呼び出すことになります。
部品ごとに作り組み合わせていくオブジェクト指向ですね。
一見ややこしい書き方かと思われますが、データの変更や追加の際にメンテナンスしやすくなるので保守性が上がります。

クラスやメソッド、プロパティなどの用語がややこしいと思いますので説明していきます。
(私の備忘録も兼ねてます、すいません)

クラス

クラスとはこれから作るモノの定義(設計図)です。

class クラス名{
  メソッドなどの実行処理
}

メソッド

メソッドとはプログラムの処理をまとめたものです。処理に名前をつけその処理を簡単に呼び出せるように出来ます。
上記サンプルコードでいうと「Method()」です。
「Method()」をMainメソッドで呼び出しています。

修飾子 戻り値 メソッド名(引数型 引数名){
  メソッド処理
}

引数

メソッドに渡すデータのことを引数と言います。
引数と戻り値についてはサンプルコードにあまり出てこなかった為、下記ご参考ください。

using System;

namespace sample2
{
    class Program
    {
        public static void Main(string[] args)
        {   //イワークが引数
            ZukanNo95("イワーク");
            //カブトプスが引数
            ZukanNo141("カブトプス");
        }
        
        //メソッド名「ZukanNo95」の仮引数
        public static void ZukanNo95(string name)
        {
            Console.WriteLine("210kgからボディプレスを繰り出す" + name);
        }
  //メソッド名「ZukanNo141」の仮引数
        public static void ZukanNo141(string name)
        {
            Console.WriteLine("隠れ特性くだける鎧の" + name);
        }
    }
}

上記の出力結果は

210kgからボディプレスを繰り出すイワーク
隠れ特性くだける鎧のカブトプス

となります。

返り値

メソッドに引数を渡し、その結果のデータのことを戻り値といいます。

using System;

namespace sample2
{
    public class sampleclass
    {
        // void型なので戻り値を返さない
        public static void modoranai()
        {  
            Console.WriteLine("こちらの値は戻らない");
        }
        public static int add(int x)
        {
            int result = x + 200;
            return result;  // return文でresultの値を返す。
        }

        public static void main(String[] args)
        {
            int result = add(100); 
            modoranai(); // 「こちらの値は戻らない」と出力
            Console.WriteLine(result); // 「300」と出力
        }
    }
}
}

上記の出力結果は

こちらの値は戻らない
300

となります。

Voidは戻らない為、「modoranai()」をmainメソッドで呼び出しています
一方「add()」は「return result」で戻ります。その後mainメソッドで「result」で呼び出します。

引数・戻り値ともにメソッドの処理の際、使用します。
簡単に言えばメソッドという処理をする箱にaという引数を入れればbという戻り値が返ってくるというような感じで使用します。

プロパティ

プロパティは、クラスの外部からフィールドにアクセスするときの窓口になります。

public int Age
{
	get { return this._age; }
	set { this._age = value; }
}

フィールド

「フィールド」とは、クラス内に直接宣言されている変数を意味します。
メソッド内に宣言されている変数は「ローカル変数」と呼ばれることがあります。

private int _age;

プロパティ・フィールドについてはサンプルコードをご参考ください。

まとめ

私もまだまだ勉強中ですので、間違っていたりもっと良い書き方を見つけ次第、修正していきます!
皆様のメソッド等のイメージを掴むキッカケになれば幸いです。