(1) C#で見るgetやsetとは?プロパティの基礎についてご紹介
(1-1) プロパティとは?
(1-2) プロパティの構文
(1-3) サンプルプログラム
(1-4) プロパティの短縮形について
(1) C#で見るgetやsetとは?プロパティの基礎についてご紹介
(1-1) プロパティとは?
(1-2) プロパティの構文
(構文)
class [クラス名] { private [データ型] [変数名A]; // フィールド public [データ型] [プロパティ名] // プロパティ { get { return [変数名A]; } //ゲッター set { [変数名A] = value; } //セッター } }
(例)変数名「deptCode」の先頭を大文字にした「DeptCode」がプロパティ名になっている
private string deptCode = ""; public string DeptCode // プロパティ
プロパティの{ }内部の「set { [変数名] = value; }」は「セッター」の定義で、メンバ変数に値をセットするためのものです(値のセットに使う)。「value」キーワードは、プロパティに対してセットする値を表しています(次のサンプルで「emp.Name = “Rainbow”」とセットした値など。
(例)ゲッターとセッター
public string DeptCode // プロパティ { get { return deptCode; } set { deptCode = value; } }
(1-3) サンプルプログラム
(サンプルプログラム)
using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; namespace PropertiesTest2 { class Class1 { static void Main(string[] args) { Employee emp = new Employee(); emp.Name = "Rainbow"; Console.WriteLine(emp.Name); } } class Employee { //privateスコープの変数(フィールド)を宣言 private string name; //プロパティの定義 // →プロパティ名はメンバ変数の先頭を大文字にした名前 public string Name { //ゲッターはメンバ変数の値を返却 get { return name; } //セッターはメンバ変数に値をセット set { name = value; } } } }
(図131)実行結果
(1-4) プロパティの短縮形について
またC#では短縮形の自動プロパティを提供しており、これを使う事でプロパティで使うメンバ変数を宣言せずに済みます(プロパティの中身には「get;」と「set;」のみを記述するだけで良くなる)
class Employee { private string name; public string Name { get { return name; } set { name = value; } } }
(短縮表記のプロパティ)
メンバ変数の宣言が省略され、ゲッターとセッターは「get; set;」のみと非常にスリムになっています。
class Employee { public string Name // プロパティ { get; set; } }
(図141)短縮形の実行結果
(1-3)で紹介したサンプルプログラムのプロパティ部分を短縮形に差し替えて実行した結果をご紹介します。
(参考)カプセル化について
カプセル化は顧客情報などのいわゆる「機微情報」などを守るためのアプローチです。
具体的には下記を実施する事で実現します。
①変数名のスコープをprivateにする。
②publicスコープのgetメソッドとsetメソッド(いわゆるゲッターとセッター)を介してメンバ変数にアクセスするようにする。
カプセル化をする事で、メンバ変数の内容が直接操作できなくなるため、安全性が高まるとともに、例えばgetメソッドのみにすれば読み取り専用にできるなどの柔軟性もあります。