前言
年關將至因此到處都出現了各種各樣的總結和歸類文章因此這裡我也帶各位讀者對NET中出現的符號總結一下溫故知新希望能將你可能對有些符號的模糊的記憶重新理清對你有所啟示
程序員們花秒鐘將你的眼神從屏幕上挪開看下你的鍵盤(eg圖)找找鍵盤上那些熟悉的符號作為一個C#開發人員你有沒有突然發現它們大部分都是那麼的親切呢?是的看看鍵盤上的這些符號大部分都已經被微軟用掉了剩下的幾個雖然目前沒被用上但我相信微軟內部應該也有人盯著他們指不定哪天你就會發現一個新的符號用法會加入到C#中來因為符號在一門語言中往往比字母更能形象的傳文達意同時給開發人員留下深刻的印象最常見的例子就是+//*//這些數學操作符了而且相對java來講還支持用戶重載常用操作符言歸正傳下面我將按鍵盤布局從左往右一一講解這些符號順便也帶大家復習下這些符號
圖鍵盤符號圖
單個符號
由於在C#中這些符號不僅單用還有各種組合使用情況因此這裡首先介紹它們但用的情況
~
按位求補符這個符號可能有些同學見得比較少不過它確實很有用eg 的位表示為 那麼int a=~實際為即 另外~在List的BinarySearch中將會使你的操作方便很多在這個二分查找的實現中如果查找的元素不在集合中它會返回一個負值技巧就在這裡這個數的求補結果是下一個比查找元素大的元素的位置如果沒有更大的元素那麼它表示元素總數這個技巧使得我們在插入新的元素的時候方便很多eg
代碼
static void main()
{
List<string> list = new List<string>();
int search;
listAdd(public);
listAdd(protected);
listAdd(private);
listSort();
search = listBinarySearch(protected internal);
if (search < )
{
listInsert(~search protected internal);
}
foreach (string accessModifier in list)
{
ConsoleWriteLine(accessModifier);
}
}
輸出結果為
private protected protected internal public
!@#和$
!相信地球人都知道非邏輯運算符這裡不多講@常用在字符串開頭它可以告訴編譯器忽略轉義符從而可以很方便的將一些特殊字符按用戶表達意願輸出另外在AspxNet中這個字符常和其他字符混合使用#和$微軟暫時沒盯上(當然如果你覺得C#用到了#的話也行)不過$符號相信很多人都熟悉大名鼎鼎的JQuery使得這個符號處處可見不過不保證以後微軟也插上一腳
%^&*()+={}|和\
這些符號基本都是常見符號符號因此這裡也只做簡單解釋%是求余運算符^是異或位運算符&則是且位運算符另外|是或位運算符*既可以用作乘法符號還可以表示為指針()和{}用於對象中前者一方面表示函數參數區域另一方面在強制類型轉換時表示把一種類型強制轉換為括號中的類型除此它還用來包裹運算部分從而制定運算優先級後者則長表示代碼片段作用域它既可以用於指代命名空間中的有哪些類或類中包括哪些屬性方法等還可以用於在協助C#中某些特殊操作時指定其作用塊如fixedusing等等另外在字符串格式化中{}和數字組合表示目標字符串中待替換子串位置 eg StringFormat({} + {}={} )+通常表示相加數學運算符=則長用來表示賦值操作另外這些操作符可以組合來表示不同含義後面將會詳細說明這一部分\用於轉義符的開始如\n表示換行
[]
這個符號同樣常見它通常有三種使用方式一個是用於數組中表示索引位置一種為添加類型的特性時使用另外它也常常和this關鍵字在類中配合使用來形成類索引eg
class Some
{
int this[string item]
{
get
{
if(item==a)return ;
return ;
}
}
}
:;<>/?
:目前沒有單獨使用情況後面會講到它的組合使用;處處可見C#不像VB它用;表示語句的結束包裹字符串則包裹單個字符<和>分別為大和小的邏輯運算符用於分隔參數用於表示對象成員選擇器或小數點/則表示除以的數學運算符?單個常用於表示可空的值類型eg int? a=null它也可以與很多字符組合使用來表示不同意義
符號組合
好了鍵盤上的符號鍵基本介紹完畢在C#中符號更為強大的一面是它們之間不同組合產生不同的意義這裡將會對此作出一些簡單介紹
單個字符重復組合
這裡有?和+&|<>以及=??同樣用於泛型中它在值類型數據操作時非常有用它可以在值類型為空時指定默認值eg int a=someNullable??;它表示如果someNullable不為空時則將其值賦給a否則將賦值給a另外你也可以參考這篇文章++和表示自加或減&&||和==則表示邏輯關系的且或和相等<<和>>則分別表示左右移位操作最後//表示單行注釋O(∩_∩)O~
數學運算符位運算符邏輯運算符和=的組合使用
和C/C++中類似C#通過這兩種符號的組合簡化了程序員在常見數學運算時的輸入如+==*=/=%=還有&=~=|=等它是一個數自身與某個數做相應數學操作的結果如a+=完整形式為:a=a+邏輯運算符和=則表示或的關系如>=表示大於或等於
?和:組合
這個組合的符號不是緊挨著的不過他們必須組合使用這裡?和:組成條件表達式eg int c= a==b?a:b; 它的存在同樣簡化程序員代碼
=>組合以及<>配對
=>組合是以後加入的它也是構成Lamda表達使得部分它使得匿名函數的書寫更加簡潔通常它前面會包含有表達式參數部分後面則是表達式的主體部分<>則在泛型中大量使用它用來包裹類型參數
ASPX頁面中的符號組合
在ASPX中組合符號很多一般基本都是左右尖括號和其他符號組合來表示服務器端腳本代碼從而達到插入服務器代碼的目的這裡僅列出一些常見符號組合
首先<%@ 和%>用來表示ASPX 的Page指令它一般出現在頁面頂部在ASPXNET頁面或用戶控件中有個指令(注)指令格式為<%@ [Directive] [Attribute=Value] %>
<%=%>用於在HTML代碼中插入NET代碼片段在AspxNet MVC中這個字符組合非常常見這點類似以前的ASP這也是有些程序員認為MVC退回到ASP時代的一個原因
總結
符號在很多時候不僅比字符更加簡潔的表達意思而且它還更形象和直觀這也是符號中出現的一個原因不過符號並不是越多越好所謂過猶不及太多太復雜的符號有時候反而會讓程序員產生混淆和誤解所以目前NET中出現的符號數量並不是太多並且未來NET中符號應該是基本固定的不過這並不妨礙微軟在適當的時候添加一些新的有用的符號比如有人在展望NET 的時候曾提到目前微軟推出的Vedea語言的一個很不錯的特性綁定它的符號為textboxText := sliderValue; 這意味著當Value改變的時候Text也會相應改變而雙向綁定的語法則有所不同textboxText :=: sliderValue; 相信這個新的符號如果加入到NET中來一定會讓我們的代碼比以前更加方便的!同時也期待類似的能簡化我們程序員並且形象直觀的新特性符號能在未來出現對了你又期待有怎樣的新符號加入呢?
注AspNet中的頁面或用戶控件指令為Assembly Control Implements Import Master MasterType OutputCache Page PreviousPageType Reference Register
作者Sean Zhu
出處
From:http://tw.wingwit.com/Article/program/net/201311/12030.html