2022-05-01 分類(lèi): 網(wǎng)站建設(shè)
.Net開(kāi)發(fā)的兩個(gè)小技巧
一、@符號(hào)的妙用
1、可以作為保留關(guān)鍵字的標(biāo)識(shí)符
C#規(guī)范當(dāng)中,不允許使用保留關(guān)鍵字(class、bool等)當(dāng)作普通的標(biāo)識(shí)符來(lái)命名,這時(shí)候@符號(hào)作用就體現(xiàn)
出來(lái)了,可以通過(guò)@符號(hào)前綴把這些保留關(guān)鍵字可以當(dāng)作普通的字符使用。
比如:
string @class="hello"; //是正確的
string class="hello"; //報(bào)錯(cuò)
2、@符號(hào)可以表示跨行字符串
比如:
string str=@"hello
world
!"; //這樣寫(xiě)是正確的
3、字符串轉(zhuǎn)義字符
很多時(shí)候程序中出現(xiàn)目錄的時(shí)候會(huì)有“\”,字符表示轉(zhuǎn)義字符,要表示普通字符的時(shí)候需要寫(xiě)成“\\”,當(dāng)這樣字符過(guò)多的時(shí)候?qū)懫饋?lái)不是很簡(jiǎn)潔,這時(shí)候可以使用@字符。
比如:
string path="d:\\Data\\web\\ss.txt";//一般寫(xiě)法
string path=@"d:\Data\web\ss.txt";//使用@符號(hào)
二、using的用法
1、using 指令
用來(lái)引入命名空間,比如:using System;
2、為命名空間或類(lèi)型創(chuàng)建別名
using引入命名空間,并不等于編譯器編譯時(shí)加載該命名空間所在的程序集,程序集的加載決定于程序中對(duì)該程序集是否存在調(diào)用操作,
如果代碼中不存在任何調(diào)用操作則編譯器將不會(huì)加載using引入命名空間所在程序集。
創(chuàng)建別名的另一個(gè)重要的原因在于同一文件中引入的不同命名空間中包括了相同名稱(chēng)的類(lèi)型,
例如SharpMap.Geometries.Point與System.Drawing.Point。為了避免出現(xiàn)名稱(chēng)沖突,可以通過(guò)設(shè)定別名來(lái)解決:
using SGPoint = SharpMap.Geometries.Point;
using SDPoint = System.Drawing.Point;
盡管我們可以通過(guò)類(lèi)型全名稱(chēng)來(lái)加以區(qū)分,但是這顯然不是好的解決方案。用using指令創(chuàng)建別名,
有效的解決了這種可能的命名沖突,才是好的解決方案。
3、using語(yǔ)句
using 語(yǔ)句允許程序員指定使用資源的對(duì)象應(yīng)當(dāng)何時(shí)釋放資源。using 語(yǔ)句中使用的對(duì)象必須實(shí)現(xiàn) IDisposable 接口。
IDisposable接口提供了 Dispose 方法,該方法將釋放此對(duì)象的資源。
例如:
復(fù)制代碼
using(TextReader reader=new StreamReader(filename))
{
string line;
whil((line=read.ReadLine())!=null)
{
Console.WriteLine(line);
}
}
復(fù)制代碼
等價(jià)于以下形式:
復(fù)制代碼
{
TextReader reader=new StreamReader(filename);
try
{
string line;
while((line=read.ReadLine())!=null)
{
Console.WriteLine(line);
}
}
finally
{
if(reader!=null)
{
(IDisposible)reader.Dispose();
}
}
}
復(fù)制代碼
4、使用規(guī)則
1、using只能用于實(shí)現(xiàn)了IDisposable接口的類(lèi)型,禁止為不支持IDisposable接口的類(lèi)型使用using語(yǔ)句,否則會(huì)出現(xiàn)編譯錯(cuò)誤;
2、using語(yǔ)句適用于清理單個(gè)非托管資源的情況,而多個(gè)非托管對(duì)象的清理最好以try-finnaly來(lái)實(shí)現(xiàn),
因?yàn)榍短椎膗sing語(yǔ)句可能存在隱藏的Bug。內(nèi)層using塊引發(fā)異常時(shí),將不能釋放外層using塊的對(duì)象資源;
3、using語(yǔ)句支持初始化多個(gè)變量,但前提是這些變量的類(lèi)型必須相同,例如:
復(fù)制代碼
using(Pen p1 = new Pen(Brushes.Black), p2 = new Pen(Brushes.Blue))
{
//todo
}
復(fù)制代碼
4、針對(duì)初始化對(duì)個(gè)不同類(lèi)型的變量時(shí),可以都聲明為IDisposable類(lèi)型,例如:
復(fù)制代碼
using (IDisposable font = new Font("Verdana", 12), pen = new Pen(Brushes.Black))
{
float size = (font as Font).Size;
Brush brush = (pen as Pen).Brush;
}
復(fù)制代碼
公眾號(hào):原文
新聞名稱(chēng):.Net開(kāi)發(fā)的兩個(gè)小技巧
當(dāng)前路徑:http://muchs.cn/news19/148269.html
成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供軟件開(kāi)發(fā)、外貿(mào)網(wǎng)站建設(shè)、ChatGPT、網(wǎng)站設(shè)計(jì)、服務(wù)器托管、企業(yè)建站
聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶(hù)投稿、用戶(hù)轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請(qǐng)盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如需處理請(qǐng)聯(lián)系客服。電話(huà):028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來(lái)源: 創(chuàng)新互聯(lián)
猜你還喜歡下面的內(nèi)容