.Net開(kāi)發(fā)的兩個(gè)小技巧

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)

成都網(wǎng)頁(yè)設(shè)計(jì)公司