属性は、クラス、構造体、およびインターフェイスの名前付きメンバーにすることができ、プライベート フィールドの値を読み取り、書き込み、または計算するための柔軟なメカニズムを提供しますが、実際には特別なフィールド メンバーとして定義されます。 「アクセサ」のメソッドを使用して、プライベート フィールドの値を読み取り、書き込み、または操作できるようにします。
もっとわかりやすく言いましょう。たとえば、プライベート メンバーのプライベート文字列名を持つ person クラスを定義します。外部では、per オブジェクト per をインスタンス化し、per の名前を要求し、この名前を出力します。あたり、nameに値を代入して出力しますか? ?前回の研究により、クラス内のプライベート変更変数には外部オブジェクトからアクセスできないことがわかりました (per.name="HC666"^_^ を使用して直接アクセスすることはできません)。したがって、パブリック変更セット名を定義できるのは、 getname メソッドは、書き込みと出力のパラメータとして「HC666」を使用しますが、この時点では、読み取り/書き込み属性 Name を定義することでこの欠点を補うことができます。名前。
「アクセサー」
プロパティのアクセサーには、プロパティを取得または設定するための実行可能ステートメントが含まれます。アクセサーの宣言には、get アクセサー (読み取り専用を示す) または set アクセサー (書き込み専用を示す) を含めることができます。両方(読み取り可能と書き込み可能を意味します)。 (上記の例では、GET インタビュアーを使用して名前を出力し、SET インタビュアーで書き込みます。) パブリック修飾子
private string name; //声明name变量 public string Name //声明变量的属性,读写 { get { return name; } //定义读访问器,其实就是一个方法 set { name = value; } //定义写访问器,set 方法有一个隐含的参数value }
別の読み取り専用属性を定義します。たとえば、私たちの年齢は固定読み取り専用です
private uint age=10; //声明变量 age private string Age //声明变量的属性,只读 { get { return age; } //读访问器 }
属性の例:
using System; using System.Collections.Generic; using System.Linq; using System.Text; namespace Test1 { class person { //定义变量name,并且为name定义一个读写属性 private string name; //定义属性 public string Name {//访问器 get { return name; } set { name = value; } //set自带一个value参数 } //定义变量age,并且为age定义一个只读属性 private uint age=10; public uint Age { get { return age; } } } class Program { static void Main(string[] args) { person per = new person(); per.Name = "HC666"; //执行写入属性 Console.WriteLine("我的名字叫:{0}\t今年 {1} 岁了",per.Name,per.Age); //读属性 } } }
結果:
抽象属性: これも前に述べましたが、属性はクラス、構造体、インターフェイスのメンバーになることができ、当然、抽象の抽象属性になることもできます。抽象属性は、抽象メソッドと同様に、派生クラスに実装されます。using System; using System.Collections.Generic; using System.Linq; using System.Text; namespace Test1 {//定义一个person抽象类 abstract class person {//定义抽象属性 public abstract string Name {//读写 get; set; } public abstract uint Age {//只读 get; } } //定义派生类 class student : person { private string name; private uint age=10; //实现抽象属性 public override string Name { get { return name ; } set { name=value; } } public override uint Age { get { return age; } } } class Program { static void Main(string[] args) { student stu = new student(); stu.Name = "HC666"; //执行写入属性 Console.WriteLine("我的名字叫:{0}\t今年 {1} 岁了",stu.Name,stu.Age); //读属性 } } }
上記は C# 学習日記 27 の内容です ----属性 詳細については、PHP 中国語 Web サイト (www.php.cn) をご覧ください。