淺談C#的屬性
來源:程序員人生 發布時間:2016-04-23 09:36:52 閱讀次數:2812次
屬性可以是 類(class)、結構(struct)、接口(interface)的命名成員,他提供靈活的機制來讀取、寫入、或計算私有(private)字段的值,屬性可以看做是公共(public)字段的成員,但他實際上是定義了1個“訪問器”的特殊方法讓私有字段的值可以被讀寫或操作。
說的形象點吧,比如我們定義1個person類里面有1個私有成員 private string name; 在外界我們實例化1個person對象per,要求為per起個名字,并且輸出這個名字,也就是為per.name賦1個值,然后輸出??經過前面的學習我們知道,類中的private修飾的變量外界對象是訪問不到的,(沒法直接per.name="HC666"來弄定^_^)
因此只能在類里面定義1個public修飾的setname與getname方法將“HC666”作為參數來進行寫入與輸出,這樣有點繁瑣,這個時候“屬性”就該登場了,我們為name定義1個讀寫屬性Name就能夠彌補這個不足。
“訪問器”
屬性的訪問器包括有獲得或設置屬性的可履行語句,訪問器的聲明可包括1個get訪問器(表示只讀),或1個set訪問器(表示只寫),或兩個同時包括(表示可讀可寫)。(上面的例子中我們使用get訪問器輸出name,使用set訪問器寫入)
定義屬性:
上面的例子中我們可以為name 定義1個讀寫屬性Name,使用外界對象能夠訪問的public修飾符
private string name; //聲明name變量
public string Name //聲明變量的屬性,讀寫
{
get { return name; } //定義讀訪問器,其實就是1個方法
set { name = value; } //定義寫訪問器,set 方法有1個隱含的參數value
}
再定義1個只讀屬性吧,比如我們的年齡 age 是固定的只讀
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定義1個讀寫屬性
private string name;
//定義屬性
public string Name
{//訪問器
get { return name; }
set { name = value; } //set自帶1個value參數
}
//定義變量age,并且為age定義1個只讀屬性
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} 今年 {1} 歲了",per.Name,per.Age); //讀屬性
}
}
}
結果:
抽象屬性:
前面也說了,屬性可使類、結構、接口的成員,自然也能夠是抽象類的抽象屬性了,抽象屬性同抽象方法1樣在派生類中被實現。
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
namespace Test1
{//定義1個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} 今年 {1} 歲了",stu.Name,stu.Age); //讀屬性
}
}
}
生活不易,碼農辛苦
如果您覺得本網站對您的學習有所幫助,可以手機掃描二維碼進行捐贈