.Net開發(fā)的兩個小技巧

2022-05-01    分類: 網(wǎng)站建設(shè)

.Net開發(fā)的兩個小技巧

一、@符號的妙用

1、可以作為保留關(guān)鍵字的標(biāo)識符

C#規(guī)范當(dāng)中,不允許使用保留關(guān)鍵字(class、bool等)當(dāng)作普通的標(biāo)識符來命名,這時候@符號作用就體現(xiàn)

出來了,可以通過@符號前綴把這些保留關(guān)鍵字可以當(dāng)作普通的字符使用。

比如:

string @class="hello"; //是正確的

string class="hello"; //報錯


2、@符號可以表示跨行字符串

比如:

string str=@"hello

world

!"; //這樣寫是正確的


3、字符串轉(zhuǎn)義字符

很多時候程序中出現(xiàn)目錄的時候會有“\”,字符表示轉(zhuǎn)義字符,要表示普通字符的時候需要寫成“\\”,當(dāng)這樣字符過多的時候?qū)懫饋聿皇呛芎啙?,這時候可以使用@字符。

比如:

string path="d:\\Data\\web\\ss.txt";//一般寫法

string path=@"d:\Data\web\ss.txt";//使用@符號


二、using的用法

1、using 指令

用來引入命名空間,比如:using System;

2、為命名空間或類型創(chuàng)建別名

using引入命名空間,并不等于編譯器編譯時加載該命名空間所在的程序集,程序集的加載決定于程序中對該程序集是否存在調(diào)用操作,

如果代碼中不存在任何調(diào)用操作則編譯器將不會加載using引入命名空間所在程序集。

創(chuàng)建別名的另一個重要的原因在于同一文件中引入的不同命名空間中包括了相同名稱的類型,

例如SharpMap.Geometries.Point與System.Drawing.Point。為了避免出現(xiàn)名稱沖突,可以通過設(shè)定別名來解決:

using SGPoint = SharpMap.Geometries.Point;

using SDPoint = System.Drawing.Point;


盡管我們可以通過類型全名稱來加以區(qū)分,但是這顯然不是好的解決方案。用using指令創(chuàng)建別名,

有效的解決了這種可能的命名沖突,才是好的解決方案。

3、using語句

using 語句允許程序員指定使用資源的對象應(yīng)當(dāng)何時釋放資源。using 語句中使用的對象必須實現(xiàn) IDisposable 接口。

IDisposable接口提供了 Dispose 方法,該方法將釋放此對象的資源。

例如:


復(fù)制代碼

using(TextReader reader=new StreamReader(filename))

{

string line;

whil((line=read.ReadLine())!=null)

{

Console.WriteLine(line);

}

}

復(fù)制代碼


等價于以下形式:

復(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只能用于實現(xiàn)了IDisposable接口的類型,禁止為不支持IDisposable接口的類型使用using語句,否則會出現(xiàn)編譯錯誤;

2、using語句適用于清理單個非托管資源的情況,而多個非托管對象的清理最好以try-finnaly來實現(xiàn),

因為嵌套的using語句可能存在隱藏的Bug。內(nèi)層using塊引發(fā)異常時,將不能釋放外層using塊的對象資源;

3、using語句支持初始化多個變量,但前提是這些變量的類型必須相同,例如:

復(fù)制代碼

using(Pen p1 = new Pen(Brushes.Black), p2 = new Pen(Brushes.Blue))

{

//todo

}

復(fù)制代碼


4、針對初始化對個不同類型的變量時,可以都聲明為IDisposable類型,例如:

復(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ù)制代碼

公眾號:原文

新聞名稱:.Net開發(fā)的兩個小技巧
當(dāng)前路徑:http://www.bm7419.com/news19/148269.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供軟件開發(fā)外貿(mào)網(wǎng)站建設(shè)、ChatGPT網(wǎng)站設(shè)計、服務(wù)器托管企業(yè)建站

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時需注明來源: 創(chuàng)新互聯(lián)

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