c#每日小结 八
訪問修飾符:
Internal:僅限于該程序集內(同一個.exe中,即使存在于)
訪問修飾符:
Public:不受限制;
Private:只允許本類內部 訪問;
Internal:只允許本程序集訪問;
Protected:允許本類和該類的子類訪問;
Protected internal:允許本類和該類的子類 訪問以及本程序集訪問;
頂級類型的訪問只能是public或internal。
| 屬于 | 默認的成員可訪問性 | 允許聲明的可訪問性 |
| enum | Public | 無 |
| Class | Internal | Public,internal |
| Interface | Public | 無 |
| Struct | Private | Public,internal,private ? ? ? |
自定義類型,及自定義成員,枚舉中的成員默認為public,類和類中的成員才有訪問修飾符;
構造函數有:實例,私有,靜態;
靜態構造函數:調用發生在所有構造函數之前,屬于類,存放于類中,當實例多個該類實例的時候 ,一個實例會調用一個實例構造函數,而靜態構造函數只實例化一次;當本類中有靜態字段,并且該類有初值的時候,該類會自動生成一個靜態函數,并將字段放入靜態函數中;
析構函數:自動執行,無需人為調用;作用:釋放資源;一個類只能有一個,沒有任何訪問修飾符,也沒有參數;
例如:
class B
{
??? static int i;
??? static B()
??? {
??????? i = 20;
??????? Console.WriteLine("靜2態??構1造¨?");
??? }
??? public B()
??? {
??????? Console.WriteLine("實o|ì例¤y構1造¨?");
}
}
?
?
? static void Main(string[] args)
??????? {
???????
???????? ???B a = new B();
??????????? B a1 = new B();
??????????? B a2 = new B();
??????????? B a3 = new B();
??????????? B a4 = new B();
}
運行結果:
單類:
? class A
??????? {
??????????
?????????? static A a;
?????????? int i;
????????? private A()
??????????? {
? ?????????????i=10;
??????????? }
?????????? public static A? Creata()
?????????? {
?????????????? if (a == null)
?????????????? {
?????????????????? a=new A();
???????????????? return? a;
?????????????? }
?????????????? else
?????????????? {
????????????? ?????return a ;
?????????????? }
???????????????
?????????? }
?
?
static void Main(string[] args)
??????? {
??????????? A s = A.Creata();
??????????? A s1 = A.Creata();
}
?
字段:類或結構中的對象或值,可以封裝字段;通常定義為private;
可以將字段聲明為readonly;只讀字段只能在初始化時候,或構造函數中賦值;如果只讀字段前聲明為static;則在靜態構造函數中賦值;
?
屬性:實現對字段的控制;根據對get和set的設置,可以將該屬性的字段設置為只讀或只寫,還可以 對set設置條件,使用戶只能書入滿足條件的值;
例:
???? ?static void Main(string[] args)
??????? {
??????????? People p = new People();
??????????? p.Weight = 500;
??????????? Console.WriteLine(p.Weight );
?
?
class People
??? {
????? private? double weight=45;
??????? public double Weight
??????? {
??????????? get
??????????? {
??????????????? return weight;
??????????? }
??????????? set
??????????? {
??????????????? if (value > 0 && value < 400)
??????????????? {
??????????????????? weight = value;
?
??????????????? }
??????????? }
??????? }
??? }
?
轉載于:https://blog.51cto.com/3298646/618422
總結
- 上一篇: 自反ACL访问控制列表的应用
- 下一篇: 2011年7月28日星期四精彩网语