mail: zsc771120@yahoo.***.**
先看下面的程式碼:
using( form_arg arg=new form_arg(this.ip,this.port,this.limit) )
我以前經常使用「using system;「或者」using system.io」等加入新namespace, 上面的程式碼我沒有使用過,不知道這段程式碼是什麼意思,所以拜讀msdn,裡面有下面的解釋:
using可以取得乙個或者多個資源,執行乙個陳述式(statement),接著處置(dispose)該資源.
using(資源擷取) 內嵌陳述式
using(resourcetype resource = expression) statement
上面的解釋已經很清楚的,在using後面的括號裡面寫上資源的名字,程式處理資源裡面的程式碼之後自動清除該資源,下面是msdn的範例:
範例將建立名稱為log.txt
的檔案,並將兩行文字寫入檔案內。接著,該範例就會開啟相同的檔案以讀取所包含的文字行,並將文字行複製到主控台。
using system;因為using system.io;
class test
using (textreader r = file.opentext("log.txt"))
}
}
}
textwriter
和textreader
類別會實作idisposable
介面,因此,這項範例可以使用using
陳述式以確認已經正確地關閉在寫入或讀取作業後的基礎檔案。
下面是msdn的說明:
當您撰寫使用封裝資源之物件的程式碼時,您應該確定在使用完該物件時會呼叫物件的dispose方法。您可以使用 c# 的using陳述式,或其他適用於 ***mon language runtime 的程式語言中實作 try/finally 區塊,來執行這個動作。
}}
前面含有using陳述式的程式碼,就相當於下列情形。
finally
}
}using
陳述式可取得乙個或多個資源、執行一陳述式、接著處置 (dispose) 該資源。
using 陳述式:
using (
資源擷取 )
內嵌陳述式
資源擷取:
區域變數宣告
表示式
資源為實作system.idisposable
的類別或結構,它包含了名為dispose
的單一無引數方法。使用資源的程式碼可呼叫dispose
來指出該資源已不再需要。若未呼叫dispose
,最後將由於記憶體**而發生自動的處置。
若資源擷取的形式為區域變數宣告,那麼區域變數宣告的型別必須為system.idisposable
或可隱含轉換成system.idisposable
的型別。如果資源擷取的形式為表示式,則此表示式必須為system.idisposable
型別或可隱含轉換成system.idisposable
型別。
宣告於資源擷取的區域變數為唯讀,並需包含乙個初始設定式。如果內嵌陳述式嘗試修改這些區域變數 (透過設定或++
和--
運運算元),或將它們當成ref
或out
引數傳遞,就會發生編譯時期錯誤。
using
陳述式將轉譯成三個部分:擷取、使用方式和處置。資源的使用方式將隱含地包含於具有finally
子句的try
陳述式內。此finally
子句會處置這些資源。若取得null
資源,則不會呼叫dispose
,也不會擲回任何例外狀況。
下列形式的using
陳述式
using (resourcetype resource = expression) statement對應到兩個可能展開中的其中乙個。當
resourcetype
為數值型別時,展開為
否則,當finally
}
resourcetype
為參考型別時,展開為
在任何一種展開中,在內嵌陳述式中的finally
}
resource
變數都是唯讀的。
下列形式的using
陳述式
using (expression) statement擁有相同的兩種可能展開,但在此狀況中,
resourcetype
為expression
的隱含編譯時期型別,而在內嵌的陳述式中無法訪問resource
變數,而且它也是不可見的。
當資源擷取採取區域變數宣告的形式,就可能取得特定型別的多重資源。下列形式的using
陳述式
using (resourcetype r1 = e1, r2 = e2, ..., rn = en) statement完全等於一串行巢狀的
using
陳述式:
using (resourcetype r1 = e1)using (resourcetype r2 = e2)
...
using (resourcetype rn = en)
statement
lxml的另一種用法
python中lxml庫是乙個十分強大的xml解析庫,最近在看 白帽子將web掃瞄 這本書的時候,裡面提供了一種不同於以往的用法,因此在這將這個方法記錄下來 傳統的lxml庫的使用方法類似於下面這樣 from lxml import etree tree etree.html html 假定html...
模板函式的另一種用法
今天遇到了乙個bug,具體如下 type a struct type b struct此時在controller檔案中this.data lists blist,即通過模板傳遞 b形式的slice,在html檔案中通過模板呼叫 位置1 位置2 output somrthing with結束標誌 在上...
另一種尊重
上中學的時候,有一節課印象非常深刻。老師問我們如果無意闖入乙個房間,發現房間裡有一位女士正在洗澡,這時應該怎麼辦?有同學回答就當什麼也沒看見,退出房間。還有同學回答 說聲對不起!女士。然後退出去。老師笑了笑說,還有更好的答案,那就是 對不起,先生!有一對結婚多年的夫妻,有一次出差在外的妻子有一件急事...