C#でget/setを使う方法【C#のプロパティ】

C#を使っていると、「get/set」で書かれたコードを見る機会も多くあると思います。これらはプロパティと呼ばれるメソッドなのですが、「いまいちプロパティを理解していない……」と感じている方もいるのではないでしょうか。
この記事では、実際にget/setを利用しながらプロパティについて分かりやすく解説していきたいと思います。参考になれば幸いです。
- PM
- get/setは、隠蔽されているメンバ変数を取得・変更するためのメソッド(アクセサ)ですよ。
- PG
- なるほど。確かに、勝手に値が変更されていたらシステム上怖いですもんね。
C#のプロパティとは?
はじめに、C#のプロパティの概要について理解していきましょう。
プロパティとは、「メンバ変数の値を取得したり変更したりするための特殊なメソッド」で、アクセサと呼ばれたりもします。
※メンバ変数:クラスに定義されている変数。
例えるならば、メンバ変数にアクセスするための「窓口」のようなものです。
水族館や動物園に入場するとき、必ず窓口でチケットを購入してから場内に入ります。
反対に窓口を通さなければ、営業時間外に誰か怪しい人が入ってきてしまう可能性があります。これを防ぐために、プロパティはこの「窓口」の役割を果たしているのです。
C#でget/setを使ってみよう
プロパティについて理解できたところで、ここでは実際にget/setを使う方法を見ていきたいのですが、その前に基本ルールだけ確認しておきましょう。
- アクセス修飾子:どこからアクセスできるかを指定する
アクセス修飾子には「public」「protected」「private」「修飾子なし」の4種類がある
- get:メンバ変数の値を取得するためのアクセサ
- set:メンバ変数の値を設定するためのアクセサ
そして以下が、年齢を取得するサンプルコードです。
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
|
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace PropertySample
{
class Program
{
static void Main(string[] args)
{
Human n = new Human();
// setアクセサが呼ばれる
n.SetAge(24);
// getアクセサが呼ばれる
int age = n.GetAge();
Console.WriteLine("年齢は" + age + "歳です");
Console.ReadLine();
}
}
class Human
{
// メンバ変数はprivateに設定
private int age = 20;
// 外部からの取得用(publicに設定)
public int GetAge()
{
return age;
}
// 外部からの設定用(publicに設定)
public void SetAge(int num)
{
age = num;
}
}
}
|
実行結果
- PG
- get/setを使うのにはきちんとした理由があるんですね。
- PM
- そうですね。システムを作る上では必須の機能なんですよ!
get/setでメンバ変数へのアクセスを制限しよう
ここでは、C#のプロパティの概要やget/setの使い方について解説していきました。get/setを使うと、アクセス修飾子によってメンバ変数を隠ぺいすることができ、他のクラスから勝手に値を操作されることによるリスクを避けることができます。また、「get~」「set~」とコードが記述されていれば、自分以外の人がコードを読むときにも、どこで値を取得してどこで値をセットしているのかが分かりやすくなります。リスクを避けコードの可読性を上げるためにも、ぜひget/setの使い方をマスターしておきましょう。
Search キーワード検索
Popular 人気の記事
-
【VB.NET入門】DataGridViewの使い方まとめ
公開: 更新:
reccomended おすすめ記事
-
【.NETが統合】.NET 5の概要と今後のリリース予定
公開: 更新:
Categories 連載一覧
Tags タグ一覧
Jobs 新着案件
-
システム開発/東京都新宿区/【WEB面談可/C#経験者/20代前半の方活躍中/経験1年以上の方活躍中】/在宅勤務
月給29万~34万円東京都新宿区(新宿駅) -
システム開発/東京都新宿区/【WEB面談可/C#経験者/20代後半~40代の方活躍中/経験年数不問】/在宅勤務
月給41万~50万円東京都新宿区(新宿駅) -
デバック、テスト項目の作成/神奈川県横浜市/【WEB面談可/C#経験者/20代前半の方活躍中/経験1年以上の方活躍中】/在宅勤務
月給29万~34万円神奈川県横浜市(桜木町駅) -
デバック、テスト項目の作成/神奈川県横浜市/【WEB面談可/C#経験者/20代後半~40代の方活躍中/経験年数不問】/在宅勤務
月給41万~50万円神奈川県横浜市(桜木町駅) -
基幹システム開発導入/東京都新宿区/【WEB面談可/C#経験者/20代前半の方活躍中/経験1年以上の方活躍中】/在宅勤務
月給29万~34万円東京都新宿区(西新宿駅) -
基幹システム開発導入/東京都新宿区/【WEB面談可/C#経験者/20代後半~40代の方活躍中/経験年数不問】/在宅勤務
月給41万~50万円東京都新宿区(西新宿駅)