using在C#中的強制資源清理的用法,何時用using,何時用try
using 在C#中除了引用名稱空間和為名稱空間建立別名外,它還可以用做強制資源清理,方法如下:
上面程式碼完全等效於
實際上,我們用using()並編譯後,編譯器生成的也是try{}finally{}程式碼,生成的程式碼中需要執行disponse(),因此在using()中建立的物件必需實現Idisponse接可,不然是無法通過編譯的。
既然瞭解了using()的真相,我們應該知道什麼時候用using()了吧。為也再進一步瞭解我們何時用using,何時用try,我們看看下面兩段程式碼(高手可以跳過啦!!)
這段和上面的第一段程式碼相同,由於cmd的結果已經被儲存到object val裡,所以然後釋放connection對結果並不會有任何影響。
再來看看下一再using的程式碼
這時就不能再用using 自動釋放connection了,因為rdr的操作需要開啟資料庫連線的,如果自動釋放connection連線會導致rdr無法操作。何時用using可以用以下規則來確定:
1、無論程式碼成功與否都釋放物件時;
2、物件實現Idisponse介面;
3、只有一個物件需要釋放。
見至此結束!希望對一些程式設計師有望,如用有不正確的地方謝謝您的指點!
相關推薦
using在C#中的強制資源清理的用法,何時用using,何時用try
using 在C#中除了引用名稱空間和為名稱空間建立別名外,它還可以用做強制資源清理,方法如下: using (SqlConnection connection = new SqlConnection(connectionString)) { PrepareCom
vim 的各種用法,很實用哦,都是本人是在工作中學習和總結的
運維 列表 vim編輯 一個 .com 設置 windows ati 有意義 (一)初級個性化配置你的vim 1、vim是什麽? vim是Vi IMproved,是編輯器Vi的一個加強版,一個極其強大並符合IT工程師(程序員、運維)習慣的編輯器。如果你是一名職業的SE,那麽
selenium中的顯示等待,隱示等待,強制等待
一段 elf family 就會 周期 輸入 cit csdn AD 我們在實際使用selenium或者appium時,等待下個等待定位的元素出現,特別是web端加載的過程,都需要用到等待,而等待方式的設置是保證腳本穩定有效運行的一個非常重要的手段,在seleni
Python學習21:Python中函數的用法,使用函數進行簡單的數學運算
Python 函數 錯誤 今天學習了Python函數的用法,了解了使用Python如何定義一個函數。而且代碼編寫過程中也遇到了一些小小的錯誤,特此記錄一下,以方便以後在遇到同樣錯誤時能夠快速找到問題的點。 # --coding: utf-8 -- # 定義4個簡單的函數,分別是加、減、乘、除,定義
java中講講InputStreamReader的用法,舉例?
stat url ron target system cep may efault rom 2.4 InputStreamReader的用法 (視頻下載) (全部書籍)馬 克-to-win:InputStreamReader 從文字上分析:InputStream是字節流的意
java中講講BufferedInputStream的用法,舉例?
chapter 開始 stat 視頻下載 col 就是 web exc 緩存 2.3 BufferedInputStream的用法 (視頻下載) (全部書籍)馬克-to-win:BufferedInputStream 顧名思義就是它有一個內部的buffer(緩存),它的re
Android中String資源加空格,換行,@等
<string name="test">    test</string>   表示空格 <string name="test">test
ES6或ES7 中async函式的用法,通過一段程式碼理解它的用法
ES6或ES7 中async函式的用法,一行一行看完程式碼和後面的解釋,應該就會用了吧 首先,如果不懂Promise的用法,那可能你看不懂這裡寫的async的用法。 上面是async使用例子,async是非同步操作的新方案,asyncPrint函式中第21行的
關於urho3d中載入資源用法在Lua中一些注意點 android
起因: 載入場景的做法是Lua函式匯出中使用的是File的形式,在android上無法取到正確的位置,但是cache:GetResource可以獲取到XMLFile所以需要進行修改 這裡修改的檔案 Node.pkg, Scene.pkg Node.h No
微博@傳媒老跟班 年度資源彙總(2014已更新完畢,2015持續更新中,網盤資源除外)
原文地址:http://www.jianshu.com/p/c1c51e768ec3 推薦一個資源大神級別賬號,以下來自@傳媒老跟班 微博@傳媒老跟班自2014年6月30日開通以來,得到了大家的大力支援,在此表示感謝! 現將近6個月的原創資源進行整理(網盤分享資源除外),
@OneToMany,@ManyToOne 中 @mappedby 和@joincolumn 用法和解釋
/** * 建立了一個實體類。 * * 如何持久化呢? * * 1、使用@Entity進行實體類的持久化操作,當JPA檢測到我們的實體類當中有 * * @Entity 註解的時候,會在資料庫中生成對應的表結構資訊。 * * * 如何指定主鍵以及主鍵的生成策略? *
為什麼路徑正確,卻沒有辦法在瀏覽器中訪問到專案中的資源?
強調:我出現的問題可能和大家的不太一樣,但是大家要觸類旁通,舉一反三。 1、我的問題:src下的resources和webapp下resources衝突。當使用shopoperation.html載入shopoperation.js檔案時,路徑為:<script ty
Java中靜態成員變數,靜態程式碼塊,靜態內部類何時被初始化?
關於這個問題,本文不扯理論,直接上程式碼,通過結果來驗證結論,廢話少說,測試程式碼如下: public class StaticTest { public static StaticMember staticMember = new Static
關於Unity中的資源管理,你可能遇到這些問題
關鍵字 AssetBundle 資源製作 紋理\網格\材質\Shader\音訊\動畫 Lightmap 一、AssetBundle 相關 Q1:Unity中
MFC,win32,linux C中SetTimer定時器用法
if(定時條件) { //Timeout to run first time tick.it_value.tv_sec = 10; tick.it_value.tv_usec = 0; //A
spark三種清理資料的方式:UDF,自定義函式,spark.sql;Python中的zip()與*zip()函式詳解//及python中的*args和**kwargs
(1)UDF的方式清理資料 import sys reload(sys) sys.setdefaultencoding('utf8') import re import json from pyspark.sql import SparkSession
最實用的的c++中string函式的用法,沒有之一。
純屬原創, String函式的用法
python中yield的用法詳解——最簡單,最清晰的解釋
首先我要吐槽一下,看程式的過程中遇見了yield這個關鍵字,然後百度的時候,發現沒有一個能簡單的讓我懂的,講起來真TM的都是頭頭是道,什麼引數,什麼傳遞的,還口口聲聲說自己的教程是最簡單的,最淺顯易懂的,我就想問沒有有考慮過讀者的感受。 接下來是正題: 首先,如果你還沒有
借鑑了一堆資料庫中的group by 以及having count ()的用法,做個筆記,避免忘記
簡單的來說一個查詢語句,where 後面的條件是第一步篩選,如果後面有group by + 欄位,having count()的話,就是第二步篩選,經過第二步篩選出來的結果每個欄位只有一條資料。group by 是把欄位相同所有資料來進行操作。第一步:先建立一個表第二步加入
將form中的值轉換為鍵值對函式,Json.parse和json.stringify()用法
var utils = {//將form中的值轉換為鍵值對函式 getFormJSON: function(form) { var jsonData = {};