ASPnetC基本語法B篇程序結構、運算符_第1頁
ASPnetC基本語法B篇程序結構、運算符_第2頁
ASPnetC基本語法B篇程序結構、運算符_第3頁
ASPnetC基本語法B篇程序結構、運算符_第4頁
ASPnetC基本語法B篇程序結構、運算符_第5頁
已閱讀5頁,還剩21頁未讀, 繼續(xù)免費閱讀

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領

文檔簡介

1、ASP net C 基本語法 B篇 程序結構、運算符第一章ASP.net C#基本語法(B篇程序結構、運算符、運算優(yōu)先級)2011-02-08 19:21第一章ASP.net C#基本語法(B篇程序結構、運算符、運算優(yōu)先級)在上一部分中我們做了一個簡單的ASP.net的程序,但是簡單中真的簡約嗎?VS2010的模板提供了那些東西呢?單位現在需要計算很多的數字。如何實現呢?豆豆做了一個計算公式。做的是驚天地泣鬼神啊!可是結果!算出來一個怪胎!這不郁悶著呢!本章目標:了解程序模板的結構,能夠使用運算符,詳細剖析和熟練掌握運算的優(yōu)先級本章結構第一部分:項目結構先看圖新建立的ASP.net怎么有這么多

2、東西?沒有?你建立一個ASP.net項目,按Ctrl+Alt+L看看現在解讀一下里面的項目VS2010里面模板帶的頁面比VS以前的版本要多很多,結構更加的清晰了。希望大家保持這種清晰的方式來做頁面注意:沒一個aspx都帶一個aspx.cs,其中aspx頁面實現前臺的頁面顯示,也就是瀏覽器看到的內容。前臺提交的處理由后臺的aspx.cs進行處理,其處理過程瀏覽器是看不到的,這樣很有效的提高的程序的安全性和邏輯性。第二部分:程序結構如下圖:第三部分:運算符一、方括號()用于數組、索引器和屬性,也可用于指針。1、數組類型是一種后跟的類型:int fib=new int100;/創(chuàng)建一個有100元素的

3、數組若要訪問數組的一個元素,則用方括號括起所需元素的索引:fib0=fib1=1;for(int i=2;i 100;+i)fibi=fibi-1+fibi-2;/如果數組索引超出范圍,則會引發(fā)異常。2、不能重載數組索引運算符;但類型可以定義采用一個或多個參數的索引器和屬性。索引器參數括在方括號中(就像數組索引一樣),但索引器參數可聲明為任何類型(這與數組索引不同,數組索引必須為整數)。例如,.NET Framework定義Hashtable類型,該類型將鍵和任意類型的值關聯在一起。Collections.Hashtable h=new Collections.Hashtable();ha=1

4、23;/note:using astring as the index 3、方括號還用于指定屬性(C#編程指南):attribute(AllowMultiple=true)public class Attr 4、可以使用方括號來指定指針索引:unsafe fixed(int*p=fib)/p points to fib from earlier example p0=p1=1;for(int i=2;i 100;+i)pi=pi-1+pi-2;二、()除了用于指定表達式中的運算順序外,圓括號還用于指定強制轉換或類型轉換:double x=1234.7;int a;a=(int)x;/cast

5、double to int三、.點運算符(.)用于成員訪問。點運算符指定類型或命名空間的成員。例如,點運算符用于訪問.NET Framework類庫中的特定方法:System.Console.WriteLine(hello);四、:命名空間別名限定符運算符(:),用于查找標識符。它通常放置在兩個標識符之間,例如:global:System.Console.WriteLine(Hello World);備注:命名空間別名限定符可以是global。這將調用全局命名空間中的查找,而不是在別名命名空間中。五、+運算符既可作為一元運算符也可作為二元運算符。備注:一元+運算符是為所有數值類型預定義的。對數

6、值類型進行一元+運算的結果就是操作數的值。為數值類型和字符串類型預定義了二元+運算符。對于數值類型,+計算兩個操作數之和。當其中的一個操作數是字符串類型或兩個操作數都是字符串類型時,+將操作數的字符串表示形式串聯在一起。委托類型也提供二元+運算符,該運算符執(zhí)行委托串聯。using System;class MainClass static void Main()Console.WriteLine(+5);/unary plus Console.WriteLine(5+5);/addition Console.WriteLine(5+.5);/addition Console.WriteLine

7、(5+5);/string concatenation Console.WriteLine(5.0+5);/string concatenation/note automatic conversion from double to string六、-運算符既可作為一元運算符也可作為二元運算符。一元-運算符是為所有數值類型預定義的。數值類型的一元-運算的結果是操作數的反數。二元-運算符是為所有數值類型和枚舉類型預定義的,其功能是從第一個操作數中減去第二個操作數。委托類型也提供二元-運算符,該運算符執(zhí)行委托移除。using System;class MainClass static void Ma

8、in()int a=5;Console.WriteLine(-a);Console.WriteLine(a-1);Console.WriteLine(a-.5);七、*乘法運算符(*),用于計算操作數的積。另外還用作取消引用運算符,允許讀取和寫入指針。備注:所有數值類型都具有預定義的乘法運算符。*運算符還用來聲明指針類型和取消引用指針。該運算符只能在不安全的上下文中使用,通過unsafe關鍵字的使用來表示,并且需要/unsafe編譯器選項。取消引用運算符也稱為間接尋址運算符。using System;class MainClass static void Main()Console.Write

9、Line(5*2);Console.WriteLine(-.5*.2);Console.WriteLine(-.5m*.2m);/decimal type八、/除法運算符(/)用第二個操作數除第一個操作數。所有數值類型都具有預定義的除法運算符。using System;class MainClass static void Main()Console.WriteLine(-5/2);Console.WriteLine(-5.0/2);九、%模數運算符(%)計算第二個操作數除第一個操作數后的余數。所有數值類型都具有預定義的模數運算符。using System;class MainClass st

10、atic void Main()Console.WriteLine(5%2);/int Console.WriteLine(-5%2);/int Console.WriteLine(5.0%2.2);/double Console.WriteLine(5.0m%2.2m);/decimal Console.WriteLine(-5.2%2.0);/double十、&運算符既可作為一元運算符也可作為二元運算符。備注:一元&運算符返回操作數的地址(要求unsafe上下文)。為整型和bool類型預定義了二進制&運算符。對于整型,&計算操作數的邏輯按位與。對于bool操作數,&計算操作數的邏輯與;也就

11、是說,當且僅當兩個操作數均為true時,結果才為true。&運算符計算兩個運算符,與第一個操作數的值無關。例如:int i=0;if(false&+i=1)十一、|二元|運算符是為整型和bool類型預定義的。對于整型,|計算操作數的按位或結果。對于bool操作數,|計算操作數的邏輯或結果;也就是說,當且僅當兩個操作數均為false時,結果才為false。using System;class MainClass static void Main()Console.WriteLine(true|false);/logical or Console.WriteLine(false|false);/l

12、ogical or Console.WriteLine(0x0:x,0xf8|0x3f);/bitwise or十二、二元運算符是為整型和bool類型預定義的。對于整型,將計算操作數的按位異或。對于bool操作數,將計算操作數的邏輯異或;也就是說,當且僅當只有一個操作數為true時,結果才為true。using System;class MainClass static void Main()Console.WriteLine(truefalse);/logical exclusive-or Console.WriteLine(falsefalse);/logical exclusive-or

13、/Bitwise exclusive-or:Console.WriteLine(0x0:x,0xf80x3f);十三、!邏輯非運算符(!)是對操作數求反的一元運算符。為bool定義了該運算符,當且僅當操作數為false時才返回true。using System;class MainClass static void Main()Console.WriteLine(!true);Console.WriteLine(!false);十四、運算符對操作數執(zhí)行按位求補運算,其效果相當于反轉每一位。按位求補運算符是為int、uint、long和ulong類型預定義的。using System;class

14、 MainClass static void Main()int values=0,0x111,0xfffff,0x8888,0x 22000022;foreach(int vin values)Console.WriteLine(0x0:x8=0x1:x8,v,v);十五、=賦值運算符(=)將右操作數的值存儲在左操作數表示的存儲位置、屬性或索引器中,并將值作為結果返回。操作數的類型必須相同(或右邊的操作數必須可以隱式轉換為左邊操作數的類型)。using System;class MainClass static void Main()double x;int i;i=5;/int to in

15、t assignment x=i;/implicit conversion from int to double i=(int)x;/needs cast Console.WriteLine(i is0,x is1,i,x);object obj=i;Console.WriteLine(boxed value=0,type is1,obj,obj.GetType();i=(int)obj;Console.WriteLine(unboxed:0,i);十六、所有數值和枚舉類型都定義小于關系運算符(),如果第一個操作數小于第二個操作數,該運算符返回true,否則返回false。using Syst

16、em;class MainClass static void Main()Console.WriteLine(1 1.1);Console.WriteLine(1.1 1.1);十七、所有數值類型和枚舉類型都定義大于關系運算符,如果第一個操作數大于第二個操作數,它將返回true,否則返回false。using System;class MainClass static void Main()Console.WriteLine(1.1 1);Console.WriteLine(1.1 1.1);十八、?:條件運算符(?:)根據布爾型表達式的值返回兩個值中的一個。條件運算符的格式如下conditi

17、on?first_expression:second_expression;備注:如果條件為true,則計算第一表達式并以它的計算結果為準;如果為false,則計算第二表達式并以它的計算結果為準。只計算兩個表達式中的一個。使用條件運算符,可以更簡潔、雅觀地表達那些否則可能要求if-else結構的計算。例如,為在sin函數的計算中避免被零除,可編寫為if(x!=0.0)s=Math.Sin(x)/x;else s=1.0;或使用條件運算符,s=x!=0.0?Math.Sin(x)/x:1.0;十九、+增量運算符(+)將操作數加1。增量運算符可以出現在操作數之前或之后:備注:第一種形式是前綴增量操

18、作。該操作的結果是操作數加1之后的值。第二種形式是后綴增量操作。該運算的結果是操作數增加之前的值。數值類型和枚舉類型具有預定義的增量運算符。用戶定義的類型可重載+運算符。在枚舉時通常允許整型運算。/cs_operator_increment.cs using System;class MainClass static void Main()double x;x=1.5;Console.WriteLine(+x);x=1.5;Console.WriteLine(x+);Console.WriteLine(x);二十、-減量運算符(-)將操作數減1。減量運算符可以出現在操作數之前或之后:-vari

19、able和variable-。第一種形式是前綴減量操作。該運算的結果是操作數減小之后的值。第二種形式是后綴減量操作。該運算的結果是操作數減小之前的值。備注:數值類型和枚舉類型具有預定義的增量運算符。用戶定義的類型可重載-運算符(請參見運算符)。在枚舉時通常允許整型運算。/cs_operator_decrement.cs using System;class MainClass static void Main()double x;x=1.5;Console.WriteLine(-x);x=1.5;Console.WriteLine(x-);Console.WriteLine(x);二十一、&條

20、件與運算符(&)執(zhí)行其bool操作數的邏輯與運算,但僅在必要時才計算第二個操作數。備注:操作x&y對應于操作x&y不同的是,如果x為false,則不計算y(因為不論y為何值,與操作的結果都為false)。這被稱作為短路計算。不能重載條件與運算符,但常規(guī)邏輯運算符和運算符true與false的重載,在某些限制條件下也被視為條件邏輯運算符的重載。示例在下面的示例中,請觀察使用&的表達式只計算第一個操作數。using System;class MainClass static bool Method1()Console.WriteLine(Method1 called);return false;s

21、tatic bool Method2()Console.WriteLine(Method2 called);return true;static void Main()Console.WriteLine(regular AND:);Console.WriteLine(result is0,Method1()&Method2();Console.WriteLine(short-circuit AND:);Console.WriteLine(result is0,Method1()&Method2();二十二、|條件或運算符(|)執(zhí)行bool操作數的邏輯或運算,但僅在必要時才計算第二個操作數。備注

22、:操作x|y對應于操作x|y不同的是,如果x為true,則不計算y(因為不論y為何值,或操作的結果都為true)。這被稱作為短路計算。不能重載條件或運算符,但規(guī)則邏輯運算符和運算符true與false的重載,在某些限制條件下也被視為條件邏輯運算符的重載。示例在下面的示例中,請觀察使用|的表達式只計算第一個操作數。using System;class MainClass static bool Method1()Console.WriteLine(Method1 called);return true;static bool Method2()Console.WriteLine(Method2

23、called);return false;static void Main()Console.WriteLine(regular OR:);Console.WriteLine(result is0,Method1()|Method2();Console.WriteLine(short-circuit OR:);Console.WriteLine(result is0,Method1()|Method2();二十三、左移運算符()將第一個操作數向左移動第二個操作數指定的位數。第二個操作數的類型必須是int。備注:如果第一個操作數是int或uint(32位數),則移位數由第二個操作數的低5位給出。

24、如果第一個操作數是long或ulong(64位數),則移位數由第二個操作數的低6位給出。第一個操作數的高序位被放棄,低序空位用0填充。移位操作從不導致溢出。用戶定義的類型可重載運算符(請參見operator);第一個操作數的類型必須為用戶定義的類型,第二個操作數的類型必須為int。重載二元運算符時,也會隱式重載相應的賦值運算符(如果有)。示例using System;class MainClass static void Main()int i=1;long lg=1;Console.WriteLine(0x0:x,i 1);Console.WriteLine(0x0:x,i 33);Cons

25、ole.WriteLine(0x0:x,lg 33);二十四、右移運算符()將第一個操作數向右移動第二個操作數所指定的位數。備注:如果第一個操作數為int或uint(32位數),則移位數由第二個操作數的低五位給出(第二個操作數&0x1f)。如果第一個操作數為long或ulong(64位數),則移位數由第二個操作數的低六位給出(第二個操作數&0x3f)。如果第一個操作數為int或long,則右移位是算術移位(高序空位設置為符號位)。如果第一個操作數為uint或ulong類型,則右移位是邏輯移位(高位填充0)。用戶定義的類型可重載運算符;第一個操作數的類型必須為用戶定義的類型,第二個操作數的類型必

26、須為int。有關更多信息,請參見operator。重載二元運算符時,也會隱式重載相應的賦值運算符(如果有)。示例using System;class MainClass static void Main()int i=-1000;Console.WriteLine(i 3);二十五、=對于預定義的值類型,如果操作數的值相等,則相等運算符(=)返回true,否則返回false。對于string以外的引用類型,如果兩個操作數引用同一個對象,則=返回true。對于string類型,=比較字符串的值。備注:用戶定義的值類型可重載=運算符(請參見operator)。用戶定義的引用類型也可重載=運算符,盡

27、管在默認情況下,無論對于預定義的引用類型還是用戶定義的引用類型,=的行為都與上面描述的相同。如果重載=,則還必須重載!=。在枚舉時通常允許整型運算。示例using System;class MainClass static void Main()/Numeric equality:True Console.WriteLine(2+2)=4);/Reference equality:different objects,/same boxed value:False.object s=1;object t=1;Console.WriteLine(s=t);/Define some strings:

28、string a=hello;string b=String.Copy(a);string c=hello;/Compare string values of aconstant and an instance:True Console.WriteLine(a=b);/Compare string references;/a is aconstant but bis an instance:False.Console.WriteLine(object)a=(object)b);/Compare string references,both constants/have the same val

29、ue,so string interning/points to same reference:True.Console.WriteLine(object)a=(object)c);二十六、!=如果操作數相等,則不等運算符(!=)返回false,否則,返回true。為所有類型(包括字符串和對象)預定義了不等運算符。用戶定義的類型可重載!=運算符。備注:對于預定義的值類型,如果操作數的值不同,則不等運算符(!=)返回true,否則,返回false。對于string以外的引用類型,如果兩個操作數引用不同的對象,則!=返回true。對于string類型,!=比較字符串的值。用戶定義的值類型可重載!=

30、運算符(請參見operator)。用戶定義的引用類型也可重載!=運算符,盡管在默認情況下,無論對于預定義的引用類型還是用戶定義的引用類型,!=的行為都與上面描述的相同。如果重載!=,則還必須重載=。在枚舉時通常允許整型運算。示例using System;class MainClass static void Main()/Numeric inequality:Console.WriteLine(2+2)!=4);/Reference equality:two objects,same boxed value object s=1;object t=1;Console.WriteLine(s!=

31、t);/String equality:same string value,same string objects string a=hello;string b=hello;/compare string values Console.WriteLine(a!=b);/compare string references Console.WriteLine(object)a!=(object)b);二十七、=所有數值和枚舉類型都定義了小于等于關系運算符(=),如果第一個操作數小于或等于第二個操作數,則該運算符將返回true,否則返回false。using System;class MainCl

32、ass static void Main()Console.WriteLine(1=1.1);Console.WriteLine(1.1=1.1);二十八、=所有數值類型和枚舉類型都定義大于等于關系運算符=,如果第一個操作數大于或等于第二個操作數,該運算符將返回true,否則返回false。using System;class MainClass static void Main()Console.WriteLine(1.1=1);Console.WriteLine(1.1=1.1);二十九、+=加法賦值運算符。備注:使用+=賦值運算符的表達式,例如x+=y等效于x=x+y不同的是x只計算一次

33、。+運算符的含義取決于x和y的類型(例如,對于數值操作數,其含義為相加;對于字符串操作數,其含義為串聯)。不能直接重載+=運算符,但用戶定義的類型可以重載+運算符(請參見operator)。示例using System;class MainClass static void Main()int a=5;a+=6;Console.WriteLine(a);string s=Micro;s+=soft;Console.WriteLine(s);三十、-=減法賦值運算符。備注:使用-=賦值運算符的表達式,如x-=y等效于x=x-y不同的是x只計算一次。-運算符的含義取決于x和y的類型(例如,對于數值

34、操作數,其含義為相減;對于委托操作數,其含義為移除)。不能直接重載-=運算符,但用戶定義的類型可重載-運算符(請參見operator)。示例using System;class MainClass static void Main()int a=5;a-=6;Console.WriteLine(a);三十一、*=二元乘法賦值運算符。備注:使用*=賦值運算符的表達式,如x*=y等效于x=x*y不同的是x只計算一次。為數值類型預定義了*運算符以執(zhí)行乘法操作。不能直接重載*=運算符,但用戶定義的類型可重載*運算符(請參見operator)。示例using System;class MainClass

35、 static void Main()int a=5;a*=6;Console.WriteLine(a);三十二、/=除法賦值運算符。備注:使用/=賦值運算符的表達式,如x/=y等效于x=x/y不同的是x只計算一次。為數值類型預定義了/運算符以執(zhí)行除法操作。不能直接重載/=運算符,但用戶定義的類型可重載/運算符(請參見operator)。對于所有復合賦值運算符,隱式重載二元運算符會重載等效的復合賦值。示例using System;class MainClass static void Main()int a=5;a/=6;Console.WriteLine(a);double b=5;b/=6

36、;Console.WriteLine(b);三十三、%=模塊賦值運算符。備注:使用%=賦值運算符的表達式,如x%=y等效于x=x%y不同的是x只計算一次。為數值類型預定義了%運算符,以計算相除后的余數。不能直接重載%=運算符,但用戶定義的類型可重載%運算符(請參見運算符(C#參考)。示例using System;class MainClass static void Main()int a=5;a%=3;Console.WriteLine(a);三十四、&=與賦值運算符。備注:使用&=賦值運算符的表達式,如x&=y等效于x=x&y不同的是x只計算一次。&運算符對整數操作數執(zhí)行按位邏輯與運算,對

37、bool操作數執(zhí)行邏輯與運算。不能直接重載&=運算符,但用戶定義的類型可重載二元&運算符(請參見operator)。示例using System;class MainClass static void Main()int a=0x0c;a&=0x06;Console.WriteLine(0x0:x8,a);bool b=true;b&=false;Console.WriteLine(b);三十五、|=或賦值運算符。備注:使用|=賦值運算符的表達式,例如x|=y等效于x=x|y不同的是x只計算一次。|運算符對整型操作數執(zhí)行按位邏輯或運算,對布爾操作數執(zhí)行邏輯或運算。不能直接重載|=運算符,但用戶

38、定義的類型可以重載|運算符(請參見operator)。示例using System;class MainClass static void Main()int a=0x0c;a|=0x06;Console.WriteLine(0x0:x8,a);bool b=true;b|=false;Console.WriteLine(b);三十六、=異或賦值運算符。備注:下列形式的表達式x=y按如下規(guī)則計算:x=xy不同的是x只計算一次。運算符對整數操作數執(zhí)行按位異或運算,對bool操作數執(zhí)行邏輯異或運算。不能直接重載=運算符,但用戶定義的類型可重載!運算符(請參見operator)。示例using Sy

39、stem;class MainClass static void Main()int a=0x0c;a=0x06;Console.WriteLine(0x0:x8,a);bool b=true;b=false;Console.WriteLine(b);三十七、=左移賦值運算符。備注:下列形式的表達式x=y按如下規(guī)則計算:x=x y不同的是x只計算一次。運算符將x向左移動y指定的位數。不能直接重載=運算符,但用戶定義的類型可重載運算符(請參見operator)。示例using System;class MainClass static void Main()int a=1000;a=4;Console.WriteLine(a);三十八、=右移賦值運算符。備注:下列形式的表達式x=y按如下規(guī)則計算:x=x y不同的是x只計算一次。運算符根據y指定的量對x進行右移位。不能直接重載=運算符,但用戶定義的類型可重載運算符(請參見operator)。示例using System;class MainClas

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯系上傳者。文件的所有權益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
  • 4. 未經權益所有人同意不得將文件中的內容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
  • 6. 下載文件中如有侵權或不適當內容,請與我們聯系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論