1. 程式人生 > >c#中的各種符號解釋【不斷更新中】

c#中的各種符號解釋【不斷更新中】

單個符號

由於在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()
{
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使得這個符號處處可見,不過不保證以後微軟也插上一腳。一下是$符號在js中的意思:

1、首先可以用來表示變數,
比如變數 var s='asdsd'或var $s='asdasd';
2、在正則表示式中,它可以匹配結尾
/sa$/.test(string)
匹配string字串中的sa,比如string='125sa'則匹配,string='125sa21'則不匹配
正則表示式很複雜,這裡只是簡單的說說。
3、由於受prototype.js(老外寫的框架,用於將一些常用的函式封裝,方便操作)的影響,
現在很多人都用 $來表示一個查詢物件的函式,
$=function (id) { return (typeof (id)=='object')?id:document.getElementById(id); };
其實就是一個自定義函式,用$只是簡單,其實用其它字元也是一樣的,
f=function (id) { return (typeof (id)=='object')?id:document.getElementById(id); };也可以
其中引數id是html文件中的id,
比如<div id='ss'></div>
則obj=$('ss')就是引用的這個id='ss'的物件

4.%,^,&,*,(),-,+,=,{},|和/

這些符號基本都是常見符號符號,因此這裡也只做簡單解釋。%是求餘運算子,^是異或位運算子,&則是按位與運算子,另外|是按位或運算 符。*既可以用作乘法符號,還可以表示為指標。()和{}用於物件中,前者一方面表示函式引數區域,另一方面在強制型別轉換時表示把一種型別強制轉換為括 號中的型別,除此,它還用來包裹運算部分從而制定運算優先順序,後者則長表示程式碼片段作用域,它既可以用於指代名稱空間中的有哪些類或類中包括哪些屬性方法 等,還可以用於在協助C#中某些特殊操作時指定其作用塊,如fixed,using等等,另外在字串格式化中,{}和數字組合表示目標字串中待替換子 串位置, e.g. String.Format(“{0} + {1}={3}”, 1,2,3)。+通常表示相加數學運算子,=則長用來表示賦值操作。另外,這些操作符可以組合來表示不同含義,後面將會詳細說明這一部分。/用於轉義符的 開始,如/n表示換行。

5.[]

這個符號同樣常見,它通常有三種使用方式,一個是用於陣列中表示索引位置,一種為新增型別的特性時使用,另外它也常常和this關鍵字在類中配合使用來形成類索引。

以下為引用的內容:

class Some

{

int this [ string
item]

{

get


{

if (item == ”a”) return 1 ;

return 0
;

}

}

}

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),我們不再需要使用“轉義序列”就可以指定反斜線之類的特殊字元[email protected]的這個特點使得在表示檔案路徑時很方便.如: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: http://lj.soft.blog.163.com/blog/static/79402481201031711626110/

相關推薦

c#各種符號解釋不斷更新

單個符號 由於在C#中這些符號不僅單用,還有各種組合使用情況,因此這裡首先介紹它們單用的情況。 1. ~ 逐位求反,例如: ~1=0,~0=1,~00010=11101; 另一種解釋:按位求補符。這個符號可能比較少見,不過它確實很有用。1的32位表示為0000 0000 0000 0000 0000 000

不斷更新記錄一下做CTF逆向題時常用到的IDA Pro快捷鍵

不斷更新中...... Shift + F12 搜尋檔案中的字串    用來定位關鍵程式碼再好不過了 Alt + t 搜尋變數   可以用來跟蹤  從下向上追蹤非常好用 Ctrl + t 搜尋全部變數&n

不斷更新記錄一下做CTF逆向題目時常用到的彙編指令

本文主要記錄自己在做CTF逆向題目過程中常用到的彙編指令 不斷更新中...... cdq指令它大多出現在除法運算之前。它實際的作用只是把EDX的所有位都設成EAX最高位的值 idiv是有符號數除法指令,完成兩個有符號數相除 memset是計算機中C/C++語言函式。

組合語言二三事(遇到的各種問題,bug)——不斷更新

一、上機環境 DOSbox -0.74(64位) 編輯程式:EDIT.COM或其他文字編輯工具軟體,用於編輯源程式。 彙編程式:MASM.EXE,用於彙編源程式,得到目標程式。 連線程式:LINK.EX

不斷更新總結程式設計的技巧、語法等,需要多敲程式碼、記憶掌握

1. void DrawRectangle( cv::Mat& img, cv::Rect  box ) { cv::rectangle(img,box.tl(),box.br(),cv::Scalar(g_rng.uniform(0, 255), g_rng.uni

各種內排序演算法的C++實現(不斷更新

      和很多計算機系的同學們一樣,我在大學二年級時也學了《資料結構》這門課。當時我的老師是一箇中科大的博士,現在已經是教授了。他在課上曾經這樣評價這門課:《資料結構》幾乎是所有計算機課程的基礎課,如果把這門課學好了,其他的專業課就不成問題了。還有,IT公司的面試經常涉及

有獎徵資源,分享有內涵貢獻你的CSDN博文和下載資源,不斷更新

分享一下我老師大神的人工智慧教程!零基礎,通俗易懂!http://blog.csdn.net/jiangjunshow 也歡迎大家轉載本篇文章。分享知識,造福人民,實現我們中華民族偉大復興!        

Java圖形介面實踐(不斷更新!)

建立一個簡單的窗體 package practice; import javax.swing.JButton; import javax.swing.JFrame; public class Test { public static void main(String[] args) {

面試劍指offer題目解析及tips速查(不斷更新

4、二維陣列中的查詢x:陣列從左到右遞增,從上到下遞增。P38 tips:右上角開始查詢,x小左移,x大下移。 tips+:陣列為空(空指標),行列<=0情況;左移和下移越界情況;引數為指標,根據記憶體儲存規則訪問陣列元素。 5、替換空格:實現函式將一個字串中所有空格替

redis集群常見問題匯總持續更新...

redis集群 問題匯總問題1: 執行命令:./redis-trib.rb /usr/local/lib/ruby/2.0.0/rubygems/core_ext/kernel_require.rb:45:in `require‘: cannot load such file -- redis (Loa

IDEA學習系列之剖析IDEA裏的Code Style(適合各種語言)(不斷更新)(圖文詳解)

ESS javascrip 挖掘 python pre scrip 學習 裏的 yaml   不多說,直接上幹貨!   File -> Settings -> Editor -> Code Style

自動化運維系列之Ansible命令應用基礎(模塊的應用)持續更新···

cto fff 安裝 ecb code 文件的 核心 取值 back 自動化運維系列之Ansible命令應用基礎(模塊的應用) 模塊簡介 Ansible可以使用命令行方式進行自動化管理,基本語法如下: ansible <host-pattern> [-m mo

Log4Net 常見錯誤提示(不斷更新

onf conf 錯誤 提示 無法識別 bsp hand 更新 con 1. 無法識別log4中的節點,如:<section>等 解決辦法:在configrition中直接申明log4 <configSections><!--必須為第一個節點-

Linux 運維工程師經典面試題合集(不斷更新 ...)

type ESS 9.png aux 比較 服務器 var 命令 如何 寫在前面的話 做運維以來,關註了很多關於互聯網技術,培訓等亂七八糟的公眾號,時不時的就會推一些各種公司的面試題過來。 大致看了一下,發現自己很多知識要麽遺忘了,要麽很難說出個所

linux常用命令,不斷更新...

檢視ip  ip addr 防火牆 firewalld的基本使用 啟動: systemctl start firewalld 重啟: systemctl restart firewalld 關閉: systemctl stop firewalld 檢視狀態: systemctl sta

決策樹之ID3演算法實現(python) [置頂] 怒寫一個digit classification(不斷更新)

分享一下我老師大神的人工智慧教程!零基礎,通俗易懂!http://blog.csdn.net/jiangjunshow 也歡迎大家轉載本篇文章。分享知識,造福人民,實現我們中華民族偉大復興!        

[轉] webpack之前端效能優化(史上最全,不斷更新。。。)

最近在用webpack優化首屏載入效能,通過幾種外掛之後我們上線前後的速度快了一倍,在此就簡單的分享下吧,先上個優化前後首屏渲染的對比圖。 可以看到總下載時間從3800ms縮短到1600ms。 我們在用webpack時一般都會選擇多入口檔案吧,為的就是將自己的原始碼跟第三方庫程式碼分離。這是之前的程式

pawnable.kr - 練習持續更新

前言 刷一刷題。。才發現題目腦洞可以有多大 fd 這裡可以看見這裡有一個fd引數如果我們讓fd等於0,那麼之後呼叫read之後的第個引數為0就會讀取我們鍵入的值瞭然後就可以輸入下滿要比較的值就可以了 collision 這裡可以看見這裡有一個強制型別的轉換,char型

長期轉載精華帖持續更新

轉載就要拿出轉載的樣子 最近收到貼吧的提示,加上最近的面試使得自己發現需要有所作為,弄點東西了。 這篇文章就作為我技術學習的一個見證吧。 再次對原創和轉載的那些人表示感謝   EJB的優勢 http://blog.chinaunix.net/uid-677342-i

各個企業創始人記錄--持續更新!!!

各個企業品牌創始人記錄: 企業品牌創始人表 企業\品牌 創始人 外婆家 吳國平 迪安診斷 陳海斌 NPC潮流文化 李晨