C 中的修飾符

2021-04-15 21:06:28 字數 3989 閱讀 2312

c#

中的修飾符有很多,可以分類:

類修飾符,訪問修飾符,成員修飾符。

public

,inner

,friend

,abastruct

,sealed

public class classpublic{}

如果乙個類宣告為

public

,則該類的應用不受限制。具體含義可與

inner

參考對比。

inner class classinner{}

如果乙個類宣告為

inner

,則該類只在程式集中可見。可以理解成在同乙個

dll或

exe中可以應用該類,但是出了該程式集,則該類就不可見了。例如:

程式集as**1

中有乙個

public

的類classpublic

乙個inner

的類classinner

。在程式集

as**2

中有乙個類

classtest

:class classtest

abstract class classabstract

} 表示

classabstract demo3 = new classabstract();

這句話通不過編譯【是錯誤的】,因為該類是乙個抽象類。

如果某個類中包含了乙個抽象函式,則這個類必須是乙個抽象類。

抽象函式:只有函式的宣告而沒有實現**的函式。試想:如果

classabstract

類中有個抽象函式

functionabstract

。demo3.functionabstract()

將會怎麼執行?不知道怎麼執行,因為

functionabstract

函式沒有實現**。這不亂套了嗎?

所以不允許

new乙個抽象類。

sealed class classsealed{}

類classsealed

的意思是不允許被繼承。即:

class classsealedchild : classsealed{}

是錯誤的。

用sealed

修飾的類叫密封類。

class class1{}

sealed class class : class1{}

這句話是正確的。

成員修飾符:

public, private, protected, virtual, override, abstract, sealed, static, const,readonly,

乙個函式,變數,屬性可以是

public

型別的,即是公共型別。類之外的函式可以呼叫這個成員。

例如:class class1

class class2

} class class3 : class1

protected string str3;

乙個函式,變數,屬性可以是

protected

型別的,即是保護型別。本類及其本類的派生類可以訪問。

private string str2;

乙個函式,變數,屬性可以是

private

型別的,即是私有型別。類之外的函式不可以呼叫這個成員。

inner string str3;

乙個函式,變數,屬性可以是

inner

型別的,即只有在同乙個程式集中才可以訪問。

inner protected string str4;

protected inner string str5;

這兩個變數表示在同乙個程式集或者是當前類的派生類才可以訪問。

注意:這裡不是指:當前類的派生類而且是在同乙個程式集中。

virtual void test()

虛函式,參考

override

修飾符。

abstract void test();

abstract string teststr

沒有實現**的函式或屬性。包含抽象函式或屬性的類必須是抽象類。

class class1

void test2()

}class class2 : class1

}class class3 : class2

}class class4 : class2

class1 demo1 = new class1();

demo1. test2();// test2

中呼叫的是

class1

中的test

函式。class2 demo2 = new class2();

demo2. test2();// test2

中呼叫的是

class2

中的test

函式。因為

class2

重寫了class1

中的test

函式class3 demo3 = new class3();

demo3. test2();// test2

中呼叫的是

class3

中的test

函式。因為

class2

重寫了test

函式class4 demo4 = new class4();

demo4. test2();// test2

中呼叫的是

class2

中的test

函式。因為

class4

沒有重寫

test

,所以它執行其父類**。

sealed

可以用來秘方虛函式或抽象函式。例如:

class class1

}class class2 : class1

}class class3 : class2

}class class1

c#中,靜態變數/函式

/屬性表示可以通過類名訪問的變數/函式

/屬性。表示該變數/函式

/屬性是屬於類的,而不是屬於物件的

class class2

readonly

可以修飾靜態變數,表示該變數不可以修改。即靜態唯讀變數。

static readonly

與const

類似。我們可以用只實現

get方法的屬性類實現與

static readonly

相似的功能,但是比

static readonly

方便的地方就是屬性中可以有變數。

例如:static string txt = 「txt」;

static string txt2 = txt + 「

1234」

;//錯誤static string txt3

}class class1

常量很類似於靜態唯讀變數。

public

delegatestring onmovehandler(string name, int id);

宣告乙個委託,名稱叫

onmovehandler

,該委託的返回型別為

string

,該委託的引數為

string name, int id

。public event onmovehandler onmove;

宣告乙個事件,該事件的名稱為

onmove

,型別為

onmovehandler

。該事件的返回型別

string

,引數為

string name, int id

給事件賦值:

private string mymove(string name, int id)

onmove += new onmovehandler(mymove);

C 中的訪問修飾符 修飾符 類

版本visual studio 2010 主要參考 修飾符用於修改型別和型別成員的宣告 訪問修飾符 訪問級別 public 訪問不受限制 類內和任何類外中訪問 protected 可訪問域限定於類內或從該類派生的類內 類內和該類的派生類 internal 可訪問域限定於類所在的程式集內 該類所在程式...

C 中的修飾符

c 辨析系列談 本文主要是參考網上的一篇文章,對c 中的一些重要修飾符和函式 static,const,inline,虛函式 進行分析,一方面可以加深對c 的認識和理解 另一方面也是拋磚引玉,希望大家都參與討論,共同提高。l static修飾符 static 是c 中很常用的修飾符,它被用來控制變數...

C 中的修飾符

1.可空型別修飾符 引用型別可以使用空引用表示乙個不存在的值,而值型別通常不能表示為空。例如 string str null 是正確的,int i null 編譯器就會報錯。為了使值型別也可為空,就可以使用可空型別,即用可空型別修飾符 來表示,表現形式為 t?例如 int?表示可空的整形,datet...