C#類的成員之Field字段的使用
字段是在類中聲明的成員變量,用來(lái)儲(chǔ)存描述類特征的值,字段可以被該類中聲明的成員函數(shù)訪問(wèn),根據(jù)字段的訪問(wèn)控制,也可以在其他類中通過(guò)該類或該類的實(shí)例進(jìn)行訪問(wèn).字段可以是任意變量類型.
字段(field)是類中最常見(jiàn)的成員之一。字段是在類或結(jié)構(gòu)中直接聲明的任意類型的變量,C#支持靜態(tài)字段(類型字段)和實(shí)例字段。對(duì)于實(shí)例字段,其內(nèi)存在創(chuàng)建實(shí)例時(shí)動(dòng)態(tài)分配,而對(duì)于靜態(tài)字段,其內(nèi)存在類型對(duì)象創(chuàng)建時(shí)分配。
用readonly修飾符聲明的字段為只讀字段,只讀字段是特殊的實(shí)例字段,它只能在字段聲明中或構(gòu)造函數(shù)中重新賦值,在其他任何地方都不能改變字段的值。不過(guò),反射可以修改只讀字段(沒(méi)有什么是反射改不了的)。
如果類的字段沒(méi)有賦值,則會(huì)自動(dòng)賦默認(rèn)處置,數(shù)值型為0,字符串型為空字符串。
靜態(tài)字段
靜態(tài)字段屬于類本身,并在該類的所有實(shí)例之間共享。
只能使用類名訪問(wèn)靜態(tài)字段,如果按實(shí)例名稱訪問(wèn)靜態(tài)字段,將出現(xiàn)CS0176編譯時(shí)錯(cuò)誤。
在類的外部必須采用如下方法引用靜態(tài)字段:”類名.靜態(tài)字段名”
實(shí)例字段
如果類中定義的字段不含有修飾符static,該字段為實(shí)例字段。
在類的外部,實(shí)例字段采用如下方法引用:”實(shí)例名.實(shí)例字段名”.
例程分析
using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; ? namespace 類的成員之字段 { ? ? public class Field ? ? { ? ? ? ? public static int inta;//靜態(tài)字段有關(guān)鍵字static,一般是private屬性,只能在類里訪問(wèn) ? ? ? ? public readonly int intb = 1;//readonly實(shí)例字段 ? ? ? ? public int intc;//實(shí)例字段 ? ? ? ? public string str;//實(shí)例字段 ? ? } ? ? class Program ? ? { ? ? ? ? static void Main(string[] args) ? ? ? ? { ? ? ? ? ? ? Console.WriteLine("inta值是:" + Field.inta); ? ? ? ? ? ? Field.inta = 19;//靜態(tài)字段賦值訪問(wèn) ? ? ? ? ? ? Console.WriteLine("inta賦值后是:" + Field.inta); ? ? ? ? ? ? //Field.intb;無(wú)法讀取,讀取方式錯(cuò)誤 ? ? ? ? ? ? Field a = new Field(); ? ? ? ? ? ? Console.WriteLine("intb值是:" + a.intb); ? ? ? ? ? ? //a.intb = 1;readonly實(shí)例字段是只讀的,修改賦值報(bào)錯(cuò) ? ? ? ? ? ? Console.WriteLine("intc值是:" + a.intc); ? ? ? ? ? ? a.intc = 100; ? ? ? ? ? ? Console.WriteLine("intc賦值后是:" + a.intc); ? ? ? ? ? ? Console.WriteLine("str數(shù)據(jù)值是:" + a.str); ? ? ? ? ? ? a.str = "123"; ? ? ? ? ? ? Console.WriteLine("str賦值后是:" + a.str); ? ? ? ? ? ? Field b = new Field(); ? ? ? ? ? ? Console.WriteLine("intc值是:" + b.intc); ? ? ? ? ? ? b.intc = 200; ? ? ? ? ? ? Console.WriteLine("intc賦值后是:" + b.intc); ? ? ? ? ? ? Console.WriteLine("intc賦值后是:" + a.intc); ? ? ? ? ? ? Console.ReadKey(); ? ? ? ? ? } ? ? } }
到此這篇關(guān)于C#類的成員之Field字段的使用的文章就介紹到這了,更多相關(guān)C# Field字段內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
C#的鋸齒數(shù)組以及C++實(shí)現(xiàn)代碼
鋸齒數(shù)組首先是二維數(shù)組,第一維的維數(shù)是確定的。之所以在C#中能夠出現(xiàn)靈活的鋸齒數(shù)組,是因?yàn)?,C#的數(shù)組是引用類型(本質(zhì)上存放的是指針)。根據(jù)這個(gè)引用類型(指針)的概念,C++中用指針數(shù)組同樣可以實(shí)現(xiàn)2013-09-09C#編程中使用設(shè)計(jì)模式中的原型模式的實(shí)例講解
這篇文章主要介紹了C#編程中使用設(shè)計(jì)模式中的原型模式的實(shí)例講解,原型模式創(chuàng)建新對(duì)象方便快捷,而且可在運(yùn)行時(shí)根據(jù)需要通過(guò)克隆來(lái)添加和去除他們,也可在程序運(yùn)行是根據(jù)情況來(lái)修改類內(nèi)部的數(shù)據(jù),需要的朋友可以參考下2016-02-02C# 兩種方式反編譯修改源碼(dnspy,ildasm & ilasm)
這篇文章主要介紹了C# 兩種方式反編譯修改源碼(dnspy,ildasm & ilasm),幫助大家更好的理解和使用c#語(yǔ)言,感興趣的朋友可以了解下2020-11-11Unity 實(shí)現(xiàn)刪除missing腳本組件
這篇文章主要介紹了Unity 刪除missing腳本組件的實(shí)現(xiàn)方式,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧2021-04-04C#使用timer實(shí)現(xiàn)的簡(jiǎn)單鬧鐘程序
這篇文章主要介紹了C#使用timer實(shí)現(xiàn)的簡(jiǎn)單鬧鐘程序,涉及timer控件的使用及音頻文件的操作技巧,非常具有實(shí)用價(jià)值,需要的朋友可以參考下2015-03-03C#?Unity使用正則表達(dá)式去除部分富文本的代碼示例
正則表達(dá)式在我們?nèi)粘i_(kāi)發(fā)中的用處不用多說(shuō)了吧,下面這篇文章主要給大家介紹了關(guān)于C#?Unity使用正則表達(dá)式去除部分富文本的相關(guān)資料,文中通過(guò)實(shí)例代碼介紹的非常詳細(xì),需要的朋友可以參考下2023-03-03C#實(shí)現(xiàn)漂亮的數(shù)字時(shí)鐘效果
這篇文章主要介紹了C#實(shí)現(xiàn)漂亮的數(shù)字時(shí)鐘效果,涉及時(shí)間函數(shù)的應(yīng)用及繪圖的方法,需要的朋友可以參考下2014-10-10