日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問(wèn) 生活随笔!

生活随笔

當(dāng)前位置: 首頁(yè) > 编程资源 > 编程问答 >内容正文

编程问答

Readonly 与Const

發(fā)布時(shí)間:2023/12/20 编程问答 35 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Readonly 与Const 小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

Readonly Const

readonly 關(guān)鍵字是可以在字段上使用的修飾符。當(dāng)字段聲明包括 readonly修飾符時(shí),該聲明引入的字段賦值只能作為聲明的一部分出現(xiàn),或者出現(xiàn)在同一類的構(gòu)造函數(shù)中。

對(duì)于實(shí)例字段,在包含字段聲明的類的實(shí)例構(gòu)造函數(shù)中;或者,對(duì)于靜態(tài)字段,在包含字段聲明的類的靜態(tài)構(gòu)造函數(shù)中。也只有在上下文中,將 readonly字段作為outref參數(shù)傳遞才有效。

readonly關(guān)鍵字與const關(guān)鍵字不同。const字段只能在該字段的聲明中初始化。readonly字段可以在聲明或構(gòu)造函數(shù)中初始化。因此,根據(jù)所使用的構(gòu)造函數(shù),readonly字段可能具有不同的值。另外,const字段為編譯時(shí)常數(shù),而 readonly字段可用于運(yùn)行時(shí)常數(shù),

const 關(guān)鍵字用于修改字段或局部變量的聲明。它指定字段或局部變量的值是常數(shù),不能被修改。

常數(shù)聲明的類型指定聲明引入的成員類型。常數(shù)表達(dá)式必須產(chǎn)生具有目標(biāo)類型或者可隱式轉(zhuǎn)換為目標(biāo)類型的類型的值。

常數(shù)表達(dá)式是在編譯時(shí)可被完全計(jì)算的表達(dá)式。因此,對(duì)于引用類型的常數(shù),可能的值只能是 string null

常數(shù)聲明可以聲明多個(gè)常數(shù),不允許在常數(shù)聲明中使用 static修飾符。常數(shù)可以參與常數(shù)表達(dá)式,

C#readonly關(guān)鍵字只能在字段上面使用
public readonly TcpClient client;
不能在類,方法,屬性上面使用readonly!!
順便看了一下readonlyconst的區(qū)別:

????????? readonlyconst都是用來(lái)標(biāo)識(shí)常量的。

????????? const可用于修飾classfield或者一個(gè)局部變量(local variable);而readonly僅僅用于修飾classfield

????????? const常量的值必定在編譯時(shí)就已明確并且恒定的;而readonly常量卻有一點(diǎn)不同,那就是其值可以在運(yùn)行時(shí)編譯,當(dāng)然,它也必須遵守作為常量的約束,那就是值必須恒定不變。

????????? const常量必須在聲明的同時(shí)對(duì)其進(jìn)行賦值,并且確保該值在編譯時(shí)可確定并恒定;而readonly常量則可以根據(jù)情況選擇在聲明的同時(shí)對(duì)其賦予一個(gè)編譯時(shí)確定并恒定的值,或者將其值的初始化工作交給實(shí)例構(gòu)造函數(shù)(instant constructor)完成。如:public readonly string m_Now = DateTime.Now.ToString();m_Now會(huì)隨著運(yùn)行時(shí)實(shí)際情況變化而變化。

????????? const常量屬于類級(jí)別(class level)而不是實(shí)例對(duì)象級(jí)別(instant object level),并且它不能跟static結(jié)合一起使用,該常量的值將由整個(gè)類的所有實(shí)例對(duì)象共同分享(詳細(xì)論述參見(jiàn)后面的Remark區(qū)域)。

????????? readonly常量既可以是類級(jí)別也可以是實(shí)例對(duì)象級(jí)別的,這取決于它的聲明以及初始化工作怎么實(shí)施。readonly可以與static結(jié)合使用,用于指定該常量屬于類級(jí)別,并且把初始化工作交由靜態(tài)構(gòu)造函數(shù)(static constructor)完成(有關(guān)如何把readonly常量聲明為類級(jí)別或?qū)嵗龑?duì)象級(jí)別的論述清參見(jiàn)后面的Remark區(qū)域)

????????? 能被const修飾聲明為常量的類型必須是以下的基元類型(primitive type):sbyte,byte,short,ushort,int,uint,long,ulong,char,float,double,float,bool,decimal,string

????????? object,數(shù)組(Array)和結(jié)構(gòu)(struct)不能被聲明為const常量。

????????? 一般情況下,引用類型是不能被聲明為const常量的,不過(guò)有一個(gè)例外:string。該引用類型const常量的值可以有兩種情況,stringnull。其實(shí),string雖然是引用類型,但是.NET卻對(duì)它特別處理,這種處理叫做字符串恒定性(immutable),使得string的值具有只讀特性。

轉(zhuǎn)載于:https://www.cnblogs.com/Veakey/archive/2012/07/13/2590538.html

總結(jié)

以上是生活随笔為你收集整理的Readonly 与Const的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。

如果覺(jué)得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。