原創(chuàng)|其它|編輯:郝浩|2009-12-25 10:41:07.000|閱讀 500 次
概述:前言:年關將至,因此到處都出現了各種各樣的總結和歸類文章。因此,這里我也帶各位讀者對.NET中出現的符號總結一下,溫故知新,希望能將你可能對有些符號的模糊的記憶重新理清,對你有所啟示。
# 界面/圖表報表/文檔/IDE等千款熱門軟控件火熱銷售中 >>
前言:年關將至,因此到處都出現了各種各樣的總結和歸類文章。因此,這里我也帶各位讀者對.NET中出現的符號總結一下,溫故知新,希望能將你可能對有些符號的模糊的記憶重新理清,對你有所啟示。
程序員們,花5秒鐘將你的眼神從屏幕上挪開,看下你的鍵盤(e.g.圖1),找找鍵盤上那些熟悉的符號,作為一個C#開發(fā)人員,你有沒有突然發(fā)現它們大部分都是那么的親切呢?是的,看看鍵盤上的這些符號,大部分都已經被微軟用掉了,剩下的幾個雖然目前沒被用上,但我相信微軟內部應該也有人盯著他們,指不定哪天你就會發(fā)現一個新的符號用法會加入到C#中來。因為符號在一門語言中往往比字母更能形象的傳文達意,同時給開發(fā)人員留下深刻的印象,最常見的例子就是+/-/*//這些數學操作符了,而且相對java來講,.net還支持用戶重載常用操作符。言歸正傳,下面我將按鍵盤布局從左往右一一講解這些符號,順便也帶大家復習下這些符號。
圖1,鍵盤符號圖
由于在C#中這些符號不僅單用,還有各種組合使用情況,因此這里首先介紹它們但用的情況。
1. ~
按位求補符。這個符號可能有些同學見得比較少,不過它確實很有用。e.g. 1的32位表示為0000 0000 0000 0000 0000 0000 0000 0001,那么int a=~1實際為-2,即1111 1111 1111 1111 1111 1111 1111 1110。另外,~在List的BinarySearch中將會使你的操作方便很多。在這個二分查找的實現中,如果查找的元素不在集合中,它會返回一個負值,技巧就在這里,這個數的求補結果是下一個比查找元素大的元素的位置,如果沒有更大的元素,那么它表示元素總數。這個技巧使得我們在插入新的元素的時候方便很多。e.g.
static void main()
{
List<string> list = new List<string>();
int search;
list.Add("public");
list.Add("protected");
list.Add("private");
list.Sort();
search = list.BinarySearch("protected internal");
if (search < 0)
{
list.Insert(~search, "protected internal");
}
foreach (string accessModifier in list)
{
Console.WriteLine(accessModifier);
}
}
輸出結果為:
private
protected
protected internal
public
2. !,@,#和$
!相信地球人都知道,非邏輯運算符,這里不多講。@常用在字符串開頭,它可以告訴編譯器忽略轉義符,從而可以很方便的將一些特殊字符按用戶表達意愿輸出,另外在Aspx.Net中這個字符常和其他字符混合使用。#和$微軟暫時沒盯上(當然如果你覺得C#用到了#的話也行)。不過$符號相信很多人都熟悉,大名鼎鼎的JQuery使得這個符號處處可見,不過不保證以后微軟也插上一腳。
4.%,^,&,*,(),-,+,=,{},|和\
這些符號基本都是常見符號符號,因此這里也只做簡單解釋。%是求余運算符,^是異或位運算符,&則是且位運算符,另外|是或位運算符。*既可以用作乘法符號,還可以表示為指針。()和{}用于對象中,前者一方面表示函數參數區(qū)域,另一方面在強制類型轉換時表示把一種類型強制轉換為括號中的類型,除此,它還用來包裹運算部分從而制定運算優(yōu)先級,后者則長表示代碼片段作用域,它既可以用于指代命名空間中的有哪些類或類中包括哪些屬性方法等,還可以用于在協助C#中某些特殊操作時指定其作用塊,如fixed,using等等,另外在字符串格式化中,{}和數字組合表示目標字符串中待替換子串位置, e.g. String.Format(“{0} + {1}={3}”, 1,2,3)。+通常表示相加數學運算符,=則長用來表示賦值操作。另外,這些操作符可以組合來表示不同含義,后面將會詳細說明這一部分。\用于轉義符的開始,如\n表示換行。
5.[]
這個符號同樣常見,它通常有三種使用方式,一個是用于數組中表示索引位置,一種為添加類型的特性時使用,另外它也常常和this關鍵字在類中配合使用來形成類索引。e.g.
class Some
{
int this[string item]
{
get
{
if(item==”a”)return 1;
return 0;
}
}
}
6. :,;',”,’,<,,,>,.,/,?
:目前沒有單獨使用情況,后面會講到它的組合使用,;處處可見,C#不像VB,它用;表示語句的結束。”包裹字符串,’則包裹單個字符。<和>分別為大和小的邏輯運算符,,用于分隔參數,.用于表示對象成員選擇器或小數點。/則表示除以的數學運算符。?單個常用于表示可空的值類型,e.g. int? a=null,它也可以與很多字符組合使用來表示不同意義。
好了,鍵盤上的符號鍵基本介紹完畢,在C#中,符號更為強大的一面是它們之間不同組合產生不同的意義,這里將會對此作出一些簡單介紹。
1. 單個字符重復組合
這里有?和+,-,&,|,<,>以及=。??同樣用于泛型中,它在值類型數據操作時非常有用,它可以在值類型為空時指定默認值,e.g. int a=someNullable??100;它表示如果someNullable不為空時則將其值賦給a,否則將100賦值給a,另外你也可以參考。++和--表示自加或減1。&&,||和==則表示邏輯關系的且,或和相等。<<和>>則分別表示左右移位操作。最后//表示單行注釋,O(∩_∩)O~。
1. 數學運算符,位運算符,邏輯運算符和=的組合使用。
和C/C++中類似,C#通過這兩種符號的組合簡化了程序員在常見數學運算時的輸入。如+=,-=,*=,/=,%=,還有&=,~=,|=等,它是一個數自身與某個數做相應數學操作的結果。如a+=10完整形式為:a=a+10。邏輯運算符和=則表示或的關系,如>=表示大于或等于。
2. ?和:組合
這個組合的符號不是緊挨著的,不過他們必須組合使用。這里?和:組成條件表達式,e.g. int c= a==b?a:b; 它的存在同樣簡化程序員代碼。
3. =>組合以及<>配對
=>組合是3.0以后加入的,它也是構成Lamda表達使得部分,它使得匿名函數的書寫更加簡潔。通常它前面會包含有表達式參數部分,后面則是表達式的主體部分。<>則在泛型中大量使用,它用來包裹類型參數。
4. ASPX頁面中的符號組合
在ASPX中組合符號很多,一般基本都是左右尖括號和其他符號組合來表示服務器端腳本代碼,從而達到插入服務器代碼的目的。這里僅列出一些常見符號組合。
首先<%@ 和%>用來表示ASPX 2.0的Page指令,它一般出現在頁面頂部。在ASPX.NET頁面或用戶控件中有11個指令(注1),指令格式為:<%@ [Directive] [Attribute=Value] %>。
<%=%>用于在HTML代碼中插入.NET代碼片段。在Aspx.Net MVC中這個字符組合非常常見,這點類似以前的ASP,這也是有些程序員認為MVC退回到ASP時代的一個原因。
總結
符號在很多時候不僅比字符更加簡潔的表達意思,而且它還更形象和直觀,這也是符號在.net中出現的一個原因。不過符號并不是越多越好,所謂過猶不及,太多太復雜的符號有時候反而會讓程序員產生混淆和誤解。所以目前.NET中出現的符號數量并不是太多,并且未來.NET中符號應該是基本固定的。不過這并不妨礙微軟在適當的時候添加一些新的,有用的符號。比如有人在展望.NET 5.0的時候曾提到目前微軟推出的的一個很不錯的特性:綁定,它的符號為:textbox.Text := slider.Value; 這意味著當Value改變的時候,Text也會相應改變。而雙向綁定的語法則有所不同:textbox.Text :=: slider.Value; 相信這個新的符號如果加入到.NET中來一定會讓我們的代碼比以前更加方便的!同時也期待類似的能簡化我們程序員并且形象,直觀的新特性符號能在未來出現。對了,你又期待有怎樣的新符號加入呢?
注1:Asp.Net中的11頁面或用戶控件指令為:Assembly, Control, Implements, Import, Master, MasterType, OutputCache, Page, PreviousPageType, Reference, Register.
本站文章除注明轉載外,均為本站原創(chuàng)或翻譯。歡迎任何形式的轉載,但請務必注明出處、不得修改原文相關鏈接,如果存在內容上的異議請郵件反饋至chenjj@fc6vip.cn
文章轉載自:博客園