プロパティは、クラス、構造体、およびインターフェイスのメンバーです。クラスまたは構造体のメンバー変数は、フィールドと呼ばれます。プロパティは、アクセサーを使用して読み書きできるフィールドの拡張です。プライベート フィールドの値です。
プロパティには正確なメモリ位置はありませんが、読み取り、書き込み、または計算できるアクセサーがあります。たとえば、Student という名前のクラスがあり、年齢、名前、コードの 3 つのプライベート フィールドが含まれています。クラスのスコープ外からこれらのフィールドに直接アクセスすることはできませんが、これらのプライベート フィールドのプロパティにはアクセスできます。
コンテンツ
表示
アクセサ
プロパティ アクセサーには、get プロパティ アクセサーと set プロパティ アクセサーの 2 種類があります。このうち、get アクセサーは属性の値を返すために使用され、set アクセサーは属性の新しい値を設定するために使用されます。アクセサーを宣言する場合、次の例に示すように、アクセサーの 1 つだけを宣言することも、両方のアクセサーを同時に宣言することもできます。
// Declare a Code property of type string
public string Code {
get {
return code;
}
set {
code = value;
}
}
// Declare a Name property of type string
public string Name {
get {
return name;
}
set {
name = value;
}
}
// Declare an Age property of type int
public int Age {
get {
return age;
}
set {
age = value;
}
}
[例] 以下の例は、属性の使用方法を示しています。
using System;
namespace it-kiso.com
{
class Demo
{
static void Main(string[] args)
{
// 新しい Student オブジェクトを作成する
Student s = new Student();
// studentのcode、name、ageを設定する
s.Code = "001";
s.Name = "Zara";
s.Age = 9;
Console.WriteLine("学生情報: {0}", s);
// 年齢を1つ増やす
s.Age += 1;
Console.WriteLine("学生情報: {0}", s);
Console.ReadKey();
}
}
class Student
{
private string code = "N.A";
private string name = "not known";
private int age = 0;
// Codeプロパティのタイプはstringで宣言する
public string Code
{
get
{
return code;
}
set
{
code = value;
}
}
// Nameプロパティのタイプはstringで宣言する
public string Name
{
get
{
return name;
}
set
{
name = value;
}
}
// Ageプロパティのタイプはintで宣言する
public int Age
{
get
{
return age;
}
set
{
age = value;
}
}
public override string ToString()
{
return "番号 = " + Code +", 名前 = " + Name + ", 年齢 = " + Age;
}
}
}
抽象プロパティ
抽象クラスには、派生クラスで実装される抽象プロパティを持つことができます。以下にその例を示します。
using System;
namespace it-kiso.com
{
class Demo
{
static void Main(string[] args)
{
// 新しいStudentオブジェクトを作成する
Student s = new Student();
// 学生のコード、名前、年齢を設定する
s.Code = "001";
s.Name = "Zara";
s.Age = 9;
Console.WriteLine("学生情報: {0}", s);
// 年齢を加算する
s.Age += 1;
Console.WriteLine("学生情報: {0}", s);
Console.ReadKey();
}
}
public abstract class Person
{
public abstract string Name
{
get;
set;
}
public abstract int Age
{
get;
set;
}
}
class Student
{
private string code = "N.A";
private string name = "not known";
private int age = 0;
// string型のCodeプロパティを宣言する
public string Code
{
get
{
return code;
}
set
{
code = value;
}
}
// string型のNameプロパティを宣言する
public string Name
{
get
{
return name;
}
set
{
name = value;
}
}
// int型のAgeプロパティを宣言する
public int Age
{
get
{
return age;
}
set
{
age = value;
}
}
public override string ToString()
{
return "コード = " + Code +", 名前 = " + Name + ", 年齢 = " + Age;
}
}
}
「 C# プロパティ (プロパティ)」についてわかりやすく解説!絶対に観るべきベスト2動画
C#プログラミング入門 第14回 (4) クラスのプロパティ
【プログラミング講座(C#)】第37回 クラスのプロパティについて【独り言】