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è)重要的原因在于同一文件中引入的不同命名空間中包括了相同名稱的類(lèi)型,
例如SharpMap.Geometries.Point與System.Drawing.Point。為了避免出現(xiàn)名稱沖突,可以通過(guò)設(shè)定別名來(lái)解決:
using SGPoint = SharpMap.Geometries.Point;
using SDPoint = System.Drawing.Point;
盡管我們可以通過(guò)類(lèi)型全名稱來(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):原文
新聞名稱:.Net開(kāi)發(fā)的兩個(gè)小技巧
當(dāng)前路徑:http://www.rwnh.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)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請(qǐng)盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如需處理請(qǐng)聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來(lái)源: 創(chuàng)新互聯(lián)
猜你還喜歡下面的內(nèi)容