1、為結構或者類聲明一個可讀/可寫的屬性
struct Screen Position
{
...
public int X
{
get {...}
set {...}
}
...
}
2、為結構或者類聲明一個只讀屬性
struct Screen Position
{
...
public int X
{
get {...}
}
...
}
3、為結構或者類聲明一個只寫屬性
struct Screen Position
{
...
public int X
{
set {...}
}
...
}
4、在接口中聲明一個屬性
interface IScreenPosition
{
int X{get;set;}
int Y {get;set;}
}
5、在結構或者類中實現一個接口屬性
struct ScreenPosition:IScreenPosition
{
public int X{...}
public int Y {...}
}
6、創建一個自動屬性
class Polygon
{
public int NumSides { get; set; }
public double SideLength { get; set; }
public Polygon()
{
this.NumSides = 4;
this.SideLength = 10.0;
}
}
Polygon square = new Polygon();
Polygon triangle = new Polygon { NumSides = 3 };
Polygon pentagon = new Polygon { SideLength = 15.5, NumSides = 5 };
注:
只有在一個結構或類初始化好之后,才能通過這個結構或類的屬性來進行賦值。
ScreenPosition location;
location.X=40;//編譯時錯誤,location尚未使用new來初始化
不可將屬性作為一個ref或者out參數值傳給一個方法;但可以將一個可寫的字段作為ref或out參數值來傳遞。這是由于屬性并不真正指向一個內存位置,相反,它指向的是一個訪問方法。
在一個屬性中,最多只能包含一個get accessor和一個set accessor。屬性不能包含其它方法、字段或屬性。
get accessor和set accessor不能獲取任何參數。要賦的值會通過內建的、隱藏的value變量,自動傳給set accessor。
不能聲明const屬性。如
const int X{get{...}set{...}}//編譯時錯誤