c#程序剛開(kāi)始啟動(dòng)的時(shí)候都會(huì)有唯一一個(gè)入口函數(shù)main()函數(shù),而非靜態(tài)成員又稱(chēng)實(shí)例成員,必須作用于實(shí)例。在程序剛開(kāi)始運(yùn)行的時(shí)候,未建立任何實(shí)例,因此無(wú)法調(diào)用實(shí)例成員,包括非靜態(tài)的Main方法。為了能夠在程序的開(kāi)始執(zhí)行Main方法,必須將其聲明為靜態(tài)。
順便說(shuō)明,在Main方法中調(diào)用的成員也必須是靜態(tài)的,除非建立過(guò)相應(yīng)的實(shí)例。
例如:
namespace lover_P.Test
{
public class Test
{
public void InstanceMethod() {} // 實(shí)例成員(非靜態(tài))
public static void StaticMethod {} // 類(lèi)型成員(靜態(tài))
public static void Main()
{
InstanceMethod(); // 錯(cuò)誤!調(diào)用了實(shí)例成員,而此時(shí)并沒(méi)有建立實(shí)例
StaticMethod(); // 正確!可以調(diào)用靜態(tài)成員
Test SomeTest = new Test(); // 建立本類(lèi)型的一個(gè)實(shí)例
SomeTest.InstanceMethod(); // 再在這個(gè)實(shí)例上調(diào)用實(shí)例成員就對(duì)了
SomeTest.StaticMethod(); // 附加一句,在實(shí)例上調(diào)用靜態(tài)成員也是錯(cuò)誤的!
}
}
}