第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號安全,請及時(shí)綁定郵箱和手機(jī)立即綁定
已解決430363個(gè)問題,去搜搜看,總會有你想問的

什么時(shí)候應(yīng)該在C#中使用“使用”塊?

什么時(shí)候應(yīng)該在C#中使用“使用”塊?

有只小跳蛙 2019-09-21 14:47:43
在某些情況下,我應(yīng)該(或不應(yīng)該?)使用“ using”塊:using(SomeType t = new SomeType()){    ...}
查看完整描述

3 回答

?
慕桂英3389331

TA貢獻(xiàn)2036條經(jīng)驗(yàn) 獲得超8個(gè)贊

完成某些對象后,需要采取一些措施。通常這是因?yàn)閷ο笫褂媚撤N需要處置的資源。例如,如果您具有文件類File的文件對象,并且該對象從文件系統(tǒng)中打開文件,則需要再次關(guān)閉文件系統(tǒng)中的文件。


如果您只是離開了文件對象,而忘記了調(diào)用file.Close(),則直到垃圾回收器(GC)運(yùn)行并且沒有使用任何文件對象時(shí),它才會被清除。垃圾收集器的運(yùn)行時(shí)間應(yīng)由公共語言運(yùn)行時(shí)(CLR)決定。如果在處理完文件后GC仍未運(yùn)行很長時(shí)間,則文件可能會保持打開狀態(tài)很長時(shí)間。如果有許多文件對象,或者如果某人想要打開文件,這可能會帶來很大的問題,但不能這樣做,因?yàn)榱粝碌奈募ο笕匀辉陂e逛。


為了解決此問題,C#具有IDisposable接口。這有一種稱為“處置”的方法。需要一些清理的類實(shí)現(xiàn)了此Dispose方法。這為您提供了一種清理使用資源的對象的標(biāo)準(zhǔn)方法。有很多類需要調(diào)用Dispose。這樣做的問題是代碼包含了對Dispose的調(diào)用,并且遵循它們很棘手,因?yàn)槟陆▽ο蟛⒄{(diào)用Dispose進(jìn)行清理的位置不同。因此,您必須仔細(xì)檢查代碼,并非常小心地檢查是否在正確的位置調(diào)用了Dispose。


為了解決此問題,C#引入了“ using”關(guān)鍵字。您可以在新對象的周圍放置“ using”關(guān)鍵字,這樣可以確保為您調(diào)用Dispose。它保證無論發(fā)生什么情況都將調(diào)用Dispose ...即使在using語句的主體中引發(fā)了異常。


因此,當(dāng)您要確保將清除分配資源的對象時(shí),應(yīng)使用“使用”。


using僅可用于在堆棧上即函數(shù)中聲明的對象。它對于聲明為類成員的對象不起作用。對于他們,您必須致電Dispose。您可能必須在您的類中實(shí)現(xiàn)Dispose,以便in可以在其需要它的任何成員對象上調(diào)用Dispose。


需要使用調(diào)用的常見對象有:文件,數(shù)據(jù)庫連接,圖形對象(如筆和畫筆)。


當(dāng)您希望兩個(gè)操作同時(shí)發(fā)生時(shí),有時(shí)也會使用它。例如,如果您想在輸入代碼塊并退出代碼時(shí)編寫一條日志語句,則可以編寫一個(gè)可以使用的日志類,如下所示:


using( Log log = new Log("Doing stuff") )

{

    // Stuff

}

可以使log類的構(gòu)造函數(shù)寫出消息,而Dispose方法也可以寫出消息。實(shí)現(xiàn)終結(jié)器(?Log)以斷言是否未調(diào)用Dispose方法,以確保在“新Log”周圍記住“ using”。


查看完整回答
反對 回復(fù) 2019-09-21
?
茅侃侃

TA貢獻(xiàn)1842條經(jīng)驗(yàn) 獲得超22個(gè)贊

我看到很多其他的答案時(shí)表示你應(yīng)該有一個(gè)using說法。我想解決的時(shí)候,特意應(yīng)該不會有一個(gè)using說法:

如果需要在當(dāng)前函數(shù)范圍之外使用對象,則不要使用using塊。一個(gè)很好的例子是返回?cái)?shù)據(jù)庫連接的工廠方法或需要返回?cái)?shù)據(jù)讀取器的方法。在任何一種情況下,如果使用using語句創(chuàng)建對象,則該對象將在返回方法之前被處理,因此無法在方法外部使用。

現(xiàn)在,您仍然要確保已處置這些對象,因此您仍可能需要在using某處聲明。只是不要在實(shí)際創(chuàng)建對象的方法中包括它。相反,您可以將函數(shù)調(diào)用本身包裝在一條using語句中。


查看完整回答
反對 回復(fù) 2019-09-21
  • 3 回答
  • 0 關(guān)注
  • 485 瀏覽

添加回答

舉報(bào)

0/150
提交
取消
微信客服

購課補(bǔ)貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動(dòng)學(xué)習(xí)伙伴

公眾號

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號