單個符號
由於在c#中這些符號不僅單用,還有各種組合使用情況,因此這裡首先介紹它們單用的情況。
1. ~
逐位求反,例如: ~1=0,~0=1,~00010=11101;
另一種解釋:按位求補符。這個符號可能比較少見,不過它確實很有用。1的32位表示為0000 0000 0000 0000 0000 0000 0000 0001,那麼int a=~1實際為-2,即1111 1111 1111 1111 1111 1111 1111 1110。另外,~在list的binarysearch中將會使你的操作方便很多。在這個二分查詢的實現中,如果查詢的元素不在集合中,它會返回乙個負 值,技巧就在這裡,這個數的求補結果是下乙個比查詢元素大的元素的位置,如果沒有更大的元素,那麼它表示元素總數。這個技巧使得我們在插入新的元素的時候 方便很多。
以下為引用的內容:
static
void
main()
foreach
(string
accessmodifier
in list)}
輸出結果為:
private protected protected internal public
2. !,@,#和$
!非邏輯運算子,這裡不多講。@常用在字串開頭,它可以告訴編譯器忽略轉義符,從而可以很方便的將一些特殊字元按使用者表達意願輸出,另外在 aspx.net中這個字元常和其他字元混合使用。#和$微軟暫時沒盯上(當然如果你覺得c#用到了#的話也行)。不過$符號相信很多人都熟悉,大名鼎鼎 的jquery使得這個符號處處可見,不過不保證以後微軟也插上一腳。一下是$符號在js中的意思:
1、首先可以用來表示變數,
比如變數 var s='asdsd'或var $s='asdasd';
2、在正規表示式中,它可以匹配結尾
/sa$/.test(string)
匹配string字串中的sa,比如string='125sa'則匹配,string='125sa21'則不匹配
正規表示式很複雜,這裡只是簡單的說說。
3、由於受prototype.js(老外寫的框架,用於將一些常用的函式封裝,方便操作)的影響,
現在很多人都用 $來表示乙個查詢物件的函式,
$=function (id) ;
其實就是乙個自定義函式,用$只是簡單,其實用其它字元也是一樣的,
f=function (id) ;也可以
其中引數id是html文件中的id,
比如則obj=$('ss')就是引用的這個id='ss'的物件
4.%,^,&,*,(),-,+,=,{},|和/
這些符號基本都是常見符號符號,因此這裡也只做簡單解釋。%是求餘運算子,^是異或位運算子,&則是按位與運算子,另外|是按位或運算 符。*既可以用作乘法符號,還可以表示為指標。()和{}用於物件中,前者一方面表示函式引數區域,另一方面在強制型別轉換時表示把一種型別強制轉換為括 號中的型別,除此,它還用來包裹運算部分從而制定運算優先順序,後者則長表示**片段作用域,它既可以用於指代命名空間中的有哪些類或類中包括哪些屬性方法 等,還可以用於在協助c#中某些特殊操作時指定其作用塊,如fixed,using等等,另外在字串格式化中,{}和數字組合表示目標字串中待替換子 串位置, e.g. string.format(「 + =」, 1,2,3)。+通常表示相加數**算符,=則長用來表示賦值操作。另外,這些操作符可以組合來表示不同含義,後面將會詳細說明這一部分。/用於轉義符的 開始,如/n表示換行。
5.[]
這個符號同樣常見,它通常有三種使用方式,乙個是用於陣列中表示索引位置,一種為新增型別的特性時使用,另外它也常常和this關鍵字在類中配合使用來形成類索引。
以下為引用的內容:
class
some}}
6. :,;',」,』,<,,,>,.,/,?
:目前沒有單獨使用情況,後面會講到它的組合使用,;處處可見,c#不像vb,它用;表示語句的結束。」包裹字串,』則包裹單個字元。< 和》分別為大和小的邏輯運算子,,用於分隔引數,.用於表示物件成員選擇器或小數點。/則表示除以的數**算符。?單個常用於表示可空的值類 型,int? a=null,它也可以與很多字元組合使用來表示不同意義。
符號組合
好了,鍵盤上的符號鍵基本介紹完畢,在c#中,符號更為強大的一面是它們之間不同組合產生不同的意義,這裡將會對此作出一些簡單介紹。
1. 單個字元重複組合
這裡有?和+,-,&,|,<,>以及=。??同樣用於泛型中,它在值型別資料操作時非常有用,它可以在值型別為空時指定預設 值,e.g. int a=somenullable??100;它表示如果somenullable不為空時則將其值賦給a,否則將100賦值給a,另外你也可以參考這篇文章
。++和--表示自加或減1。&&,||和==則表示邏輯關係的且,或和相等。《和》則分別表示左右移位操作。最後//表示單行注釋。
1. 數**算符,位運算子,邏輯運算子和=的組合使用。
和c/c++中類似,c#通過這兩種符號的組合簡化了程式設計師在常見數**算時的輸入。如+=,-=,*=,/=,%=,還有& amp;=,~=,|=等,它是乙個數自身與某個數做相應數學操作的結果。如a+=10完整形式為:a=a+10。邏輯運算子和=則表示或的關係,如& gt;=表示大於或等於。
2. ?和:組合
這個組合的符號不是緊挨著的,不過他們必須組合使用。這裡?和:組成條件表示式,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的時候曾提到目前微軟推出的vedea語言的乙個很不錯的特性:繫結,它的符號為:textbox.text := slider.value; 這意味著當value改變的時候,text也會相應改變。而雙向繫結的語法則有所不同:textbox.text :=: slider.value; 相信這個新的符號如果加入到.net中來一定會讓我們的**比以前更加方便的!同時也期待類似的能簡化我們程式設計師並且形象,直觀的新特性符號能在未來出 現。
補充:@符號是特殊而又實用的c#符號.
比如它在string中的應用.
1、字元@表示,其後的字串是個「逐字字串」(verbatim string). // 這個說法來自c# primer 中文版(stanley b. lippman, 侯捷/陳碩合譯)
2、對於逐字字串字面變數(verbatim string literal),我們不再需要使用「轉義序列」就可以指定反斜線之類的特殊字元.@的這個特點使得在表示檔案路徑時很方便.如:string str = @"c:test.txt";
3、另外一點,用@表示的字串能夠跨越數行.這數行之內的空白字元(white space)都會保留在字串裡.這樣便能允許儲存和生成帶有格式的文字塊.本文發表於www.bianceng.cn如:string strtext = @"line1line2line3";有意思的是如果在vs.net2003中當你輸入完第一行(string strtext = @"line1)換行後,游標會自動到第二行最開頭 ^_^.很智慧型化、人性化的判斷.
4、不知道大家在最初看到@的功能時有沒有想,如果「轉義序列」()在字串中「失效」,那麼想包含乙個雙引號("),怎麼辦?我找到了答案.方法 很簡單.在雙引號之前再加乙個雙引號即可.如:string str = @"""great!""said allen lee";
5、這僅僅是@在字串中的用法,有機會再去看看@的其他東東.
from:
不斷更新中 各種錯誤 總結
永遠不要把陣列大小卡的自認為太準確,能開就往大開 審的題意和考題題意不一樣 qwq 最大值設的不夠大 答案超過intqaq dp陣列沒有初始化 dp導致陣列越界re 直接輸出dp中的值 其實要利用dp值判斷最終答案 最小 大 生成樹 求解保證某 兩個點連通性 和 最小邊權最大 類似 的問題 最短路可...
不斷更新中 各種錯誤 總結
無論感覺多穩都要對拍對拍對拍 不要爆long long 不要爆long long 不要爆long long 不要爆long long 不要爆long long 不要爆long long 不要爆long long 二維st表注意邊界 見模板 連續lcm不可模 兩個指標注意只有左指標對應值不變時,右指標...
Python技巧 不斷更新中
1.讀取檔案的內容 filepath 檔案路徑 lambda f f.read f.close file filepath 0 2.將內容寫入到檔案中 lambda f,d f.write d f.close file r d a.txt w 要寫入的資料 3.根據正規表示式過濾資料夾中的檔案 im...