欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

C#中@的用法總結(jié)

 更新時(shí)間:2014年08月22日 10:46:52   投稿:shichen2014  
這篇文章主要介紹了C#中@的用法總結(jié),非常重要的用法總結(jié),需要的朋友可以參考下

本文實(shí)例匯總了C#中@的用法,對(duì)C#程序設(shè)計(jì)來(lái)說(shuō)有不錯(cuò)的借鑒價(jià)值。具體如下:

一 字符串中的用法

1.學(xué)過(guò)C#的人都知道C# 中字符串常量可以以@ 開頭聲名,這樣的優(yōu)點(diǎn)是轉(zhuǎn)義序列“不”被處理,按“原樣”輸出,即我們不需要對(duì)轉(zhuǎn)義字符加上 \ (反斜扛),就可以輕松coding。如,

string filePath = @"c:\Docs\Source\a.txt" // rather than "c:\\Docs\\Source\\a.txt" 

2.如要在一個(gè)用 @ 引起來(lái)的字符串中包括一個(gè)雙引號(hào),就需要使用兩對(duì)雙引號(hào)了。這時(shí)候你不能使用 \ 來(lái)轉(zhuǎn)義爽引號(hào)了,因?yàn)樵谶@里 \ 的轉(zhuǎn)義用途已經(jīng)被 @  “屏蔽”掉了。如,

@"""Ahoy!"" cried the captain."  // 輸出為: "Ahoy!" cried the captain. 

這有點(diǎn)像SQL中的單引號(hào)常量處理方式:

DECLARE @msg varchar(100) 
SET @msg = ''Ahoy!'' cried the captain.' -- 輸出為: 'Ahoy!' cried the captain. 

3.@會(huì)識(shí)別換行符

其實(shí)這個(gè)特性,我不知道怎么描述,只是偶然發(fā)現(xiàn)的,先來(lái)看看下面的代碼:

string script = @" 
<script type=""type/javascript""> 
function doSomething() 
{ 
} 
</script>"; 

這段代碼在cs文件中寫js,結(jié)構(gòu)就很清晰了,正常情況我們是這樣coding的:

string script2 = "<script type=\"type/javascript\">function doSomething(){}</script>"; 

或者:

string script3 = 
"<script type=\"type/javascript\">" + 
"function doSomething(){ " + 
"}</script>"; 

通常我們會(huì)選擇后者,因?yàn)閖s代碼一般比較長(zhǎng),或者方法體很大,或者需要連接其他變量,這樣結(jié)構(gòu)比較清晰。

注意:如果“拼接”的次數(shù)很多,應(yīng)該考慮使用StringBuilder了,有助于提高性能。

還有一種場(chǎng)景,也很常見,在程序中拼接 SQL 語(yǔ)句,如

private const string SQL_INS_USER = @" 
INSERT INTO t_User([UserName], [Password], Email)  
 VALUES(@UserName, @Password, @Email)"; 

這樣就像寫存儲(chǔ)過(guò)程一般,保持相當(dāng)高的代碼清晰度。然而,我們需要關(guān)注一個(gè)問(wèn)題:字符串長(zhǎng)度看下面的測(cè)試代碼:

private const string SQL_INS_USER1 = @" 
  INSERT INTO t_User([UserName], [Password], Email)  
 VALUES(@UserName, @Password, @Email)"; 

private const string SQL_INS_USER2 = @"INSERT INTO t_User([UserName], [Password], Email)  
 VALUES(@UserName, @Password, @Email)"; 

private const string SQL_INS_USER3 = @"INSERT INTO t_User([UserName], [Password], Email) VALUES(@UserName, @Password, @Email)";  

static void Main(string[] args) 
{ 
  Console.WriteLine(SQL_INS_USER1.Length);  // 126  
  Console.WriteLine(SQL_INS_USER2.Length);  // 112 
  Console.WriteLine(SQL_INS_USER3.Length);  // 86 
} 

這里可以看到三個(gè)字符串長(zhǎng)度分別相差了,14=126-112和26=112-86,注意觀察了,在代碼編輯器中,SQL_INS_USER1 中第一個(gè)換行符號(hào)之后,我縮進(jìn)13個(gè)空格(INSERT之前),而
SQL_INS_USER2 中第一個(gè)換行符號(hào)之后,我縮進(jìn)25個(gè)空格(VALUES之前),
那么,加上一個(gè)換行符,剛剛好 14和26

如此編寫代碼,雖然提高了代碼的清晰度和簡(jiǎn)便性,卻無(wú)行中帶來(lái)了另一個(gè)問(wèn)題:字符長(zhǎng)度!
很多場(chǎng)景下我們希望字符串越短越好,如,通過(guò)ADO.NET 發(fā)送 SQL 語(yǔ)句給數(shù)據(jù)庫(kù)執(zhí)行。
所以還是慎用之!

二 標(biāo)識(shí)符中的用法

在 C#  規(guī)范中, @  可以作為標(biāo)識(shí)符(類名、變量名、方法名等)的第一個(gè)字符,以允許C# 中保留關(guān)鍵字作為自己定義的標(biāo)識(shí)符。

如下代碼:

class @class 
{ 
  public static void @static(bool @bool) { 
   if (@bool) 
     System.Console.WriteLine("true"); 
   else 
     System.Console.WriteLine("false"); 
  }   
} 
class Class1 
{ 
  static void M() { 
   cl\u0061ss.st\u0061tic(true); 
  } 
} 

注意,@雖然出現(xiàn)在標(biāo)識(shí)符中,但不作為標(biāo)識(shí)符本身的一部分。
因此,以上示例,定義了一個(gè)名為 class 的類,并包含一個(gè)名為 static 的方法,以及一個(gè)參數(shù)名為了 bool 的形參。

這樣,對(duì)于跨語(yǔ)言的移植帶來(lái)了便利。因?yàn)椋硞€(gè)單詞在 C#  中作為保留關(guān)鍵字,但是在其他語(yǔ)言中也許不是。

相關(guān)文章

  • C# 獲取硬件參數(shù)的實(shí)現(xiàn)方法

    C# 獲取硬件參數(shù)的實(shí)現(xiàn)方法

    這篇文章主要介紹了C# 獲取硬件參數(shù)的實(shí)現(xiàn)方法的相關(guān)資料,希望通過(guò)本文能幫助到大家,讓大家實(shí)現(xiàn)這樣的功能,需要的朋友可以參考下
    2017-10-10
  • c#中虛函數(shù)的相關(guān)使用方法

    c#中虛函數(shù)的相關(guān)使用方法

    若一個(gè)實(shí)例方法聲明前帶有virtual關(guān)鍵字,那么這個(gè)方法就是虛方法。
    2013-02-02
  • C#調(diào)用Python模塊的方法

    C#調(diào)用Python模塊的方法

    這篇文章主要為大家詳細(xì)介紹了C#調(diào)用Python模塊的方法,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2017-05-05
  • C#實(shí)現(xiàn).net頁(yè)面之間傳值傳參方法匯總

    C#實(shí)現(xiàn).net頁(yè)面之間傳值傳參方法匯總

    這篇文章主要介紹了C#實(shí)現(xiàn).net頁(yè)面之間傳值傳參方法,實(shí)例匯總了幾類常見的傳值傳參的方法,非常具有實(shí)用價(jià)值,需要的朋友可以參考下
    2014-10-10
  • C#將圖片存放到SQL SERVER數(shù)據(jù)庫(kù)中的方法

    C#將圖片存放到SQL SERVER數(shù)據(jù)庫(kù)中的方法

    這篇文章主要介紹了C#將圖片存放到SQL SERVER數(shù)據(jù)庫(kù)中的方法,以實(shí)例形式較為詳細(xì)的分析了C#保存圖片到SQL Server數(shù)據(jù)庫(kù)的具體步驟與相關(guān)技巧,具有一定參考借鑒價(jià)值,需要的朋友可以參考下
    2015-09-09
  • Entity?Framework映射TPH、TPT、TPC與繼承類

    Entity?Framework映射TPH、TPT、TPC與繼承類

    這篇文章介紹了Entity?Framework映射TPH、TPT、TPC與繼承類,文中通過(guò)示例代碼介紹的非常詳細(xì)。對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2022-06-06
  • 簡(jiǎn)單介紹三層架構(gòu)工作原理

    簡(jiǎn)單介紹三層架構(gòu)工作原理

    這篇文章介紹了三層架構(gòu)的工作原理,二層與三層架構(gòu)的區(qū)別,三層架構(gòu)的優(yōu)劣勢(shì)。對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2021-12-12
  • C# 當(dāng)前系統(tǒng)時(shí)間獲取及時(shí)間格式詳解

    C# 當(dāng)前系統(tǒng)時(shí)間獲取及時(shí)間格式詳解

    這篇文章主要介紹了C# 當(dāng)前系統(tǒng)時(shí)間獲取及時(shí)間格式詳解的相關(guān)資料,這里提供代碼實(shí)例,幫助大家學(xué)習(xí)參考,需要的朋友可以參考下
    2016-12-12
  • C#實(shí)現(xiàn)歸并排序

    C#實(shí)現(xiàn)歸并排序

    這篇文章介紹了C#實(shí)現(xiàn)歸并排序的方法,文中通過(guò)示例代碼介紹的非常詳細(xì)。對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2022-04-04
  • C#屬性(Attribute)用法實(shí)例解析

    C#屬性(Attribute)用法實(shí)例解析

    這篇文章主要介紹了C#屬性(Attribute)用法實(shí)例解析,需要的朋友可以參考下
    2014-08-08

最新評(píng)論