c# static 靜態(tài)數(shù)據(jù)成員
更新時(shí)間:2009年06月21日 23:46:40 作者:
靜態(tài)成員屬于類所有,為各個(gè)類的實(shí)例所公用,無論類創(chuàng)建了幾多實(shí)例,類的靜態(tài)成員在內(nèi)存中只占同一塊區(qū)域。
① 靜態(tài)成員屬于類所有,非靜態(tài)成員屬于類的實(shí)例所有。
② 每創(chuàng)建一個(gè)類的實(shí)例,都市在內(nèi)存中為非靜(動(dòng))態(tài)成員新分派一塊存儲(chǔ);
靜態(tài)成員屬于類所有,為各個(gè)類的實(shí)例所公用,無論類創(chuàng)建了幾多實(shí)例,類的靜態(tài)成員在內(nèi)存中只占同一塊區(qū)域。
靜態(tài)數(shù)據(jù)成員區(qū)別于動(dòng)態(tài)數(shù)據(jù)成員,靜態(tài)變量并不是穩(wěn)定的,只是靜態(tài)變量在聲明的時(shí)候不管有沒有賦值,都市憑據(jù)它的類型分派對(duì)應(yīng)的內(nèi)存空間,他的可訪問性和作用區(qū)間與動(dòng)態(tài)變量是一樣的
==========================================================================
關(guān)于C#中靜態(tài)數(shù)據(jù)成員和靜態(tài)要領(lǐng)的總結(jié)。
1.靜態(tài)數(shù)據(jù)成員:
界說:
使用static關(guān)鍵字界說的數(shù)據(jù)成員被稱為靜態(tài)數(shù)據(jù)成員。
意義:
靜態(tài)數(shù)據(jù)成員所屬類的所有實(shí)例都共享相同的靜態(tài)成員值。
訪問:
實(shí)際上,靜態(tài)成員并不屬于某個(gè)實(shí)例,靜態(tài)成員屬于類。因此,在使用靜態(tài)成員的時(shí)候,不克使用實(shí)例名.靜態(tài)成員名的形式,而應(yīng)該使用類名.靜態(tài)成員名來進(jìn)行那個(gè)訪問。原因是因?yàn)殪o態(tài)變量沒有this指針,只能通過類名引用。
內(nèi)存分派:
分派時(shí)間點(diǎn) -> 靜態(tài)數(shù)據(jù)成員與全局變量相似,它的內(nèi)存分派產(chǎn)生在應(yīng)用程序類實(shí)例化的時(shí)候,即程序運(yùn)行期間,其釋放在程序運(yùn)行結(jié)束時(shí),區(qū)別在于其作用域差別。靜態(tài)數(shù)據(jù)成員只作用在本文件內(nèi)。
分派地點(diǎn) -> 靜態(tài)變量和要領(lǐng)在靜態(tài)存儲(chǔ)區(qū)分派內(nèi)存,而非靜態(tài)的在棧區(qū)或者堆上分派內(nèi)存 。
=====================================================================
2.靜態(tài)要領(lǐng):
界說:
使用static關(guān)鍵字聲明的要領(lǐng)被稱為靜態(tài)要領(lǐng)。
訪問:
同樣是通過類名.要領(lǐng)名來訪問。
簡(jiǎn)述訪問規(guī)則:
a.靜態(tài)要領(lǐng)是不屬于特定東西的要領(lǐng),靜態(tài)要領(lǐng)可以訪問靜態(tài)成員變量,靜態(tài)要領(lǐng)不可以直接訪問實(shí)例變量.
假如在靜態(tài)要領(lǐng)中訪問非靜態(tài)的成員,編譯器不會(huì)去判定你是通過類直接挪用還是通過東西挪用,一概認(rèn)為是非法的,因?yàn)樗豢舜_定這個(gè)非靜態(tài)的成員是否被分派了內(nèi)存,他也懶得去確定。
b.假如靜態(tài)要領(lǐng)要訪問實(shí)例變量,只有一種要領(lǐng):
可以在實(shí)例函數(shù)挪用的情況下,實(shí)例變量做為參數(shù)傳給靜態(tài)要領(lǐng)。
源代碼如下: namespace Test
...{
public class TT
...{
private int num = 10;
public void Method1()
...{
TT.Method2(num); //實(shí)例函數(shù)挪用,將實(shí)例變量num作用參數(shù)通報(bào)給了靜態(tài)要領(lǐng)Method2.
}
public static void Method2(int param) //靜態(tài)要領(lǐng)
...{
param = param * param;
Console.WriteLine(param);
}
public static void Main()
...{
TT.Method2(10);
TT test = new TT();
test.Method1();
}
}
}
即靜態(tài)要領(lǐng)可以接受實(shí)例變量類型的參數(shù),然后用實(shí)例要領(lǐng)包裹靜態(tài)要領(lǐng),再通報(bào)實(shí)例變量到靜態(tài)要領(lǐng)中。
c.靜態(tài)要領(lǐng)也不克直接挪用實(shí)例要領(lǐng),可以間接挪用,首先要?jiǎng)?chuàng)建一個(gè)類的實(shí)例,然后通過這一特定東西來挪用實(shí)例要領(lǐng)。
即,靜態(tài)要領(lǐng)要挪用實(shí)例要領(lǐng),只能通過接受東西類型的參數(shù),在要領(lǐng)體內(nèi),用東西名.要領(lǐng)名來挪用實(shí)例要領(lǐng)。
如:
class nbr
...{
//class body;
public void method_nbr()
...{
//method_nbr body;
}
}
class Myapp
...{
static void Myapp_method(nbr object1)
...{
object1.method_nbr();
}
public static void Main()
...{
nbr myobj = new nbr();
Myapp_method(myobj);
}
}
② 每創(chuàng)建一個(gè)類的實(shí)例,都市在內(nèi)存中為非靜(動(dòng))態(tài)成員新分派一塊存儲(chǔ);
靜態(tài)成員屬于類所有,為各個(gè)類的實(shí)例所公用,無論類創(chuàng)建了幾多實(shí)例,類的靜態(tài)成員在內(nèi)存中只占同一塊區(qū)域。
靜態(tài)數(shù)據(jù)成員區(qū)別于動(dòng)態(tài)數(shù)據(jù)成員,靜態(tài)變量并不是穩(wěn)定的,只是靜態(tài)變量在聲明的時(shí)候不管有沒有賦值,都市憑據(jù)它的類型分派對(duì)應(yīng)的內(nèi)存空間,他的可訪問性和作用區(qū)間與動(dòng)態(tài)變量是一樣的
==========================================================================
關(guān)于C#中靜態(tài)數(shù)據(jù)成員和靜態(tài)要領(lǐng)的總結(jié)。
1.靜態(tài)數(shù)據(jù)成員:
界說:
使用static關(guān)鍵字界說的數(shù)據(jù)成員被稱為靜態(tài)數(shù)據(jù)成員。
意義:
靜態(tài)數(shù)據(jù)成員所屬類的所有實(shí)例都共享相同的靜態(tài)成員值。
訪問:
實(shí)際上,靜態(tài)成員并不屬于某個(gè)實(shí)例,靜態(tài)成員屬于類。因此,在使用靜態(tài)成員的時(shí)候,不克使用實(shí)例名.靜態(tài)成員名的形式,而應(yīng)該使用類名.靜態(tài)成員名來進(jìn)行那個(gè)訪問。原因是因?yàn)殪o態(tài)變量沒有this指針,只能通過類名引用。
內(nèi)存分派:
分派時(shí)間點(diǎn) -> 靜態(tài)數(shù)據(jù)成員與全局變量相似,它的內(nèi)存分派產(chǎn)生在應(yīng)用程序類實(shí)例化的時(shí)候,即程序運(yùn)行期間,其釋放在程序運(yùn)行結(jié)束時(shí),區(qū)別在于其作用域差別。靜態(tài)數(shù)據(jù)成員只作用在本文件內(nèi)。
分派地點(diǎn) -> 靜態(tài)變量和要領(lǐng)在靜態(tài)存儲(chǔ)區(qū)分派內(nèi)存,而非靜態(tài)的在棧區(qū)或者堆上分派內(nèi)存 。
=====================================================================
2.靜態(tài)要領(lǐng):
界說:
使用static關(guān)鍵字聲明的要領(lǐng)被稱為靜態(tài)要領(lǐng)。
訪問:
同樣是通過類名.要領(lǐng)名來訪問。
簡(jiǎn)述訪問規(guī)則:
a.靜態(tài)要領(lǐng)是不屬于特定東西的要領(lǐng),靜態(tài)要領(lǐng)可以訪問靜態(tài)成員變量,靜態(tài)要領(lǐng)不可以直接訪問實(shí)例變量.
假如在靜態(tài)要領(lǐng)中訪問非靜態(tài)的成員,編譯器不會(huì)去判定你是通過類直接挪用還是通過東西挪用,一概認(rèn)為是非法的,因?yàn)樗豢舜_定這個(gè)非靜態(tài)的成員是否被分派了內(nèi)存,他也懶得去確定。
b.假如靜態(tài)要領(lǐng)要訪問實(shí)例變量,只有一種要領(lǐng):
可以在實(shí)例函數(shù)挪用的情況下,實(shí)例變量做為參數(shù)傳給靜態(tài)要領(lǐng)。
源代碼如下: namespace Test
...{
public class TT
...{
private int num = 10;
public void Method1()
...{
TT.Method2(num); //實(shí)例函數(shù)挪用,將實(shí)例變量num作用參數(shù)通報(bào)給了靜態(tài)要領(lǐng)Method2.
}
public static void Method2(int param) //靜態(tài)要領(lǐng)
...{
param = param * param;
Console.WriteLine(param);
}
public static void Main()
...{
TT.Method2(10);
TT test = new TT();
test.Method1();
}
}
}
即靜態(tài)要領(lǐng)可以接受實(shí)例變量類型的參數(shù),然后用實(shí)例要領(lǐng)包裹靜態(tài)要領(lǐng),再通報(bào)實(shí)例變量到靜態(tài)要領(lǐng)中。
c.靜態(tài)要領(lǐng)也不克直接挪用實(shí)例要領(lǐng),可以間接挪用,首先要?jiǎng)?chuàng)建一個(gè)類的實(shí)例,然后通過這一特定東西來挪用實(shí)例要領(lǐng)。
即,靜態(tài)要領(lǐng)要挪用實(shí)例要領(lǐng),只能通過接受東西類型的參數(shù),在要領(lǐng)體內(nèi),用東西名.要領(lǐng)名來挪用實(shí)例要領(lǐng)。
如:
class nbr
...{
//class body;
public void method_nbr()
...{
//method_nbr body;
}
}
class Myapp
...{
static void Myapp_method(nbr object1)
...{
object1.method_nbr();
}
public static void Main()
...{
nbr myobj = new nbr();
Myapp_method(myobj);
}
}
相關(guān)文章
asp.net中利用ajax獲取動(dòng)態(tài)創(chuàng)建表中文本框的值
通常在做主從表的數(shù)據(jù)錄入中,會(huì)碰到在一個(gè)頁面上同時(shí)錄入主表數(shù)據(jù)和從表數(shù)據(jù),主表的數(shù)據(jù)只有一條,從表的數(shù)據(jù)有一條到多條,這樣就要?jiǎng)討B(tài)創(chuàng)建從表數(shù)據(jù)錄入入口。2010-03-03.NET Core實(shí)現(xiàn)分表分庫、讀寫分離的通用 Repository功能
這篇文章主要介紹了.NETCore 下支持分表分庫、讀寫分離的通用 Repository,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2019-04-04ASP.NET MVC使用正則表達(dá)式驗(yàn)證手機(jī)號(hào)碼
這篇文章介紹了ASP.NET MVC使用正則表達(dá)式驗(yàn)證手機(jī)號(hào)碼的方法,文中通過示例代碼介紹的非常詳細(xì)。對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2022-09-09解決asp.net mvc UpdateModel更新對(duì)象后出現(xiàn)null問題的方法
這篇文章主要介紹了解決asp.net mvc UpdateModel 更新對(duì)象后出現(xiàn)null問題的方法,需要的朋友可以參考下2015-11-11利用VS2019創(chuàng)建Web項(xiàng)目并發(fā)送到IIS及IIS與ASP.NET配置教程
這篇文章主要介紹了利用VS2019創(chuàng)建Web項(xiàng)目,并發(fā)送到IIS,以及IIS與ASP.NET配置,本文給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2023-03-03vs2010根據(jù)字符串內(nèi)容添加斷點(diǎn)的方法介紹
這篇文章介紹了vs2010根據(jù)字符串內(nèi)容添加斷點(diǎn)的方法,有需要的朋友可以參考一下2013-08-08