.Net開發的兩個小技巧

一、@符號的妙用

1、可以作為保留關鍵字的標識符

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

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

比如:

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

string class="hello"; ? //報錯

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

比如:

string str=@"hello

world

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

3、字符串轉義字符

很多時候程序中出現目錄的時候會有“\”,字符表示轉義字符,要表示普通字符的時候需要寫成“\\”,當這樣字符過多的時候寫起來不是很簡潔,這時候可以使用@字符。

比如:

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

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

二、using的用法

1、using 指令

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

2、為命名空間或類型創建別名

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

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

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

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

using SGPoint = SharpMap.Geometries.Point;

using SDPoint = System.Drawing.Point;

盡管我們可以通過類型全名稱來加以區分,但是這顯然不是最佳的解決方案。用using指令創建別名,

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

3、using語句

using 語句允許程序員指定使用資源的對象應當何時釋放資源。using 語句中使用的對象必須實現 IDisposable 接口。

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

例如:

using(TextReader reader=new StreamReader(filename))

{

string line;

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

{

Console.WriteLine(line);

}

}

等價于以下形式:

{

TextReader reader=new StreamReader(filename);

try

{

string line;

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

{

Console.WriteLine(line);

}

}

finally

{

if(reader!=null)

{

(IDisposible)reader.Dispose();

}

}

}

4、使用規則

1、using只能用于實現了IDisposable接口的類型,禁止為不支持IDisposable接口的類型使用using語句,否則會出現編譯錯誤;

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

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

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

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

{

//todo

}

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

using (IDisposable font = new Font("Verdana", 12), pen = new Pen(Brushes.Black))

{

float size = (font as Font).Size;

Brush brush = (pen as Pen).Brush;

}

公眾號原文

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/272813.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/272813.shtml
英文地址,請注明出處:http://en.pswp.cn/news/272813.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

Codeforces Round #FF (Div. 1) A. DZY Loves Sequences

原題鏈接:http://codeforces.com/problemset/problem/446/A 題意:給一個長度為n的序列,最多可以修改一個位置的數,求最長連續上升子序列。 題解:當a[i1] > a[i-1]2的時候,可以通過改變a[i]的值來使前后兩…

25句張小嫻經典愛情語錄,句句穿心!

1、女人在床上流的眼淚,比在任何一個地方多。男人在床上說的謊話,也比在任何一個地方多。2、承諾本來就是男人與女人的一場角力,有時皆大歡喜,大部份的情況卻兩敗俱傷。3、愛情正是一個將一對陌生人變成情侶,又將一對情…

mysql 數據庫事務處理_Mysql事務處理問題 - mysql數據庫欄目 - 自學php

今天和同學討論起數據庫事務處理的問題,感覺討論中明白了一些,有些知識看過了,但是沒有實際使用還是不理解。事務處理就是將一系列操作當做一個原子操作,要么全部執行成功,如果執行失敗則保留執行期的狀態。通過提交和…

[LeetCode] Palindrome Linked List

Given a singly linked list, determine if it is a palindrome. 一開始想用棧,但是試來試去發現寫不出來遂放棄,后來想想再不濟可以轉換成數組然后分別兩頭掃,但是這樣就用了O(n) 的空間,再進一步,可不可以在鏈表里模…

【原創】Ajax的用法總結

一、什么是AjaxAjax英文全稱為“ Asynchr JavsScript and XML”(異步的JavaScript和XML),是一種創建交互式網頁的開發技術。二、Ajax技術的核心Ajax是一系列相關技術的融合,其核心包括XMLHttpRequest、JavsScript和DOM技術&#x…

gprs java_WISMO模塊GPRS上網設置的過程

WISMO模塊GPRS上網設置的過程一) AT指令設置部分(1) ATCGCLASS“B”置為“網絡WISMO模塊GPRS上網設置的過程一) AT指令設置部分(1) ATCGCLASS“B”置為“B”模式。(2) ATCGDCONT1,“IP”,“CMNET”設置APN。(3) ATCSQ 檢查信號 若返回10—31&#xff0c…

loadrunner性能測試步驟

性能測試過程分為4個階段:設計、構建、執行、分析/診斷/調節具體的工作流程如下圖 設計  >  構建  >  執行   >  分析/診斷/調節 收集要求    設置測試環境 基準測試    診斷瓶頸 設計測試策略  記錄測試腳本 性能測試     調…

Asp.Net生命周期的詳解

一.Asp.Net頁面生命周期的概念當我們在瀏覽器地址欄中輸入網址,回車查看頁面時,這時會向服務器端IIS)發送一個request請求,服務器就會判斷發送過來的請求頁面,當完全識別 TTP頁面處理程序類后,A…

java chain_java 8中 predicate chain的使用

java 8中 predicate chain的使用簡介Predicate是一個FunctionalInterface,代表的方法需要輸入一個參數,返回boolean類型。通常用在stream的filter中,表示是否滿足過濾條件。boolean test(T t);基本使用我們先看下在stream的filter中怎么使用P…

前段技術學習計劃

資料: 著作權歸作者所有。 商業轉載請聯系作者獲得授權,非商業轉載請注明出處。 作者:陳禹魯 鏈接:http://www.zhihu.com/question/19809484/answer/35544452 來源:知乎 第一本,入門 《Head first HTML&…

指針的概念

在C語言中,內存單元的地址稱為指針,專門用來存放地址的變量,有時對地址,指針和指針變量不區分,統稱指針。(地址指針) 一般情況下,最前面的存儲類型通常會省略 指針在說明的同時&…

整理一些提高C#編程性能的技巧

1、使用StringBuilder代替使用string 連接符 ""說明:String類對象是不可變的(只讀),一旦創建該對象,就不能修改該對象的值。對象String對象的重新賦值,本質上是重新創建了一個String對象并將新的…

python爬知識星球付費數據_用python爬取知識星球

去年我們做過一個叫「學長問答」的社群活動,里面沉淀了大量有價值的互動信息,后來因為各種原因終止了。今天和涂騰聊起來,覺得這些信息就這么沉寂了太浪費。所以就試著用python爬取了知識星球的內容。這個過程又學習了一些新的知識&#xff0…

HTML學習(1)

1、縮寫和首字母縮寫<abbr><acronym> <abbr title"etcetera">etc.</abbr> <acronym title"World Wide Web">WWW</acronym> 2、塊引用&#xff08;短&#xff09; <p>A: <q>B</q>C</p> 顯示結…

常用的7個SQl優化技巧

作為程序員經常和數據庫打交道的時候還是非常頻繁的&#xff0c;掌握住一些Sql的優化技巧還是非常有必要的。下面列出一些常用的SQl優化技巧&#xff0c;感興趣的朋友可以了解一下。1、注意通配符中Like的使用以下寫法會造成全表的掃描&#xff0c;例如&#xff1a;select id,n…

toolbar java_Java ToolBar.layout方法代碼示例

import org.eclipse.swt.widgets.ToolBar; //導入方法依賴的package包/類protected ToolBar createToolbar() {final ToolBar t new ToolBar(composite, SWT.FLAT | SWT.LEFT | SWT.HORIZONTAL | SWT.WRAP);final GridData d new GridData(SWT.FILL, SWT.TOP, false, false);…

Visual Studio常用的快捷鍵整理

微軟的開發工具Visual Studio作為DoNet開發者來說是必備神器&#xff0c;該開發工具內置了很多的開發快捷鍵&#xff0c;熟悉了這些開發快捷鍵&#xff0c;對于程序員來說事半功倍&#xff0c;所以在這里整理一下&#xff0c;版本是vs2012以上&#xff0c;目前小編列出了自己覺…

win7旗艦版6l打印機咋安驅動_在w7旗艦版上怎么安裝HPlaserjet6L打印機?

您好&#xff0c;感謝您選擇惠普產品。首先6L產品只有并口線&#xff0c;但是現在win 7 電腦基本都沒有并口&#xff0c;有可能是您使用了轉接usb設備&#xff0c;但是產品在出廠的時候會對產品作測試&#xff0c;測試的結果是不建議使用轉接設備或者是延長設備&#xff0c;以免…

收集一些工作中常用的經典SQL語句

作為一枚程序員來說和數據庫打交道是不可避免的&#xff0c;現收集一下工作中常用的SQL語句&#xff0c;希望能給大家帶來一些幫助&#xff0c;當然可能不全面&#xff0c;歡迎補充&#xff01;1、執行插入語句&#xff0c;獲取自動生成的遞增的ID值INSERT INTO SysRole (RoleN…

ascii modbus vc源碼_MODBUS ASCII及MODBUS RTU通訊

代碼片段和文件信息using System;using System.Collections.Generic;using System.ComponentModel;using System.Data;using System.Drawing;using System.Linq;using System.Text;using System.Threading.Tasks;using System.Windows.Forms;using System.IO.Ports;//串口using…