將從下面4個方面進(jìn)行比較:
1.靜態(tài)成員
<ul>
<li>靜態(tài)成員屬于類所有翘魄,非靜態(tài)成員屬于類的實(shí)例所有氓仲。</li>
<li>每創(chuàng)建一個類的實(shí)例羡儿,都會在內(nèi)存中為非靜態(tài)成員新分配一塊存儲;靜態(tài)成員屬于類所有早像,為各個類的實(shí)例所公用僻肖,無論類創(chuàng)建了多少實(shí)例;類的靜態(tài)成員在內(nèi)存中只占同一塊區(qū)域卢鹦。</li>
</ul>
2.靜態(tài)方法
<ul>
<li>靜態(tài)方法屬于類所有臀脏,類實(shí)例化前即可使用。</li>
<li>非靜態(tài)方法可以訪問類中的任何成員冀自,靜態(tài)方法只能訪問類中的靜態(tài)成員揉稚。</li>
<li>因?yàn)殪o態(tài)方法在類實(shí)例化前就可以使用,而類中的非靜態(tài)變量必須在實(shí)例化之后才能分配內(nèi)存熬粗,導(dǎo)致C#中靜態(tài)方法調(diào)用時無法判斷非靜態(tài)變量使用的內(nèi)存地址搀玖,故無法使用。而靜態(tài)變量的地址對類來說是固定的驻呐,故可以使用灌诅。</li>
</ul>
3.靜態(tài)方法是一種特殊的成員方法
<ul>
<li>static方法是類中的一個成員方法,屬于整個類,即不用創(chuàng)建任何對象也可以直接調(diào)用。</li>
<li>靜態(tài)方法效率上要比實(shí)例化高含末,靜態(tài)方法的缺點(diǎn)是不自動進(jìn)行銷毀猜拾,而實(shí)例化的則可以做銷毀。</li>
<li>靜態(tài)方法和靜態(tài)變量創(chuàng)建后始終使用同一塊內(nèi)存佣盒,而使用實(shí)例的方式會創(chuàng)建多個內(nèi)存挎袜。</li>
<li>C#中的方法有兩種:實(shí)例方法,靜態(tài)方法。</li>
</ul>
4.靜態(tài)方法中獲取類的名稱
靜態(tài)方法中用:
static void Main(string[] args)
{
string className = System.Reflection.MethodBase.GetCurrentMethod().ReflectedType.FullName;
Console.WriteLine(className);
}
非靜態(tài)方法中還可以用:
string GetClassName()
{
return this.GetType().FullName;
}