1.0 基础、标示符、常量、数据类型(enum 枚举,struct 结构体)、操作符、循环、数组...
一、程序
- 現實生活中,程序是指完成某些事務的一種既定方法和過程,可以把程序看成是一系列動作執行過程的描述。
- 在計算機世界,程序是指令,即為了讓計算機執行某些操作或解決某個問題而編寫的一系列有序指令的集合
- 程序=數據結構(指程序中的特定數據類型和數據組織形式)+算法(算法是指為達到某個目的所要執行的操作步驟)
二、標示符
- 標識符用來表示程序中的一個特定元素,如類名、方法名、變量名、項目名等等
- 標識符可以是字母、數字、下劃線及“@”,但是必須以字母、下劃線及@開頭,不能以數字開頭
- 標識符嚴格區分大小寫
- 可以使用中文做為標識符,但不建議使用
- 不能使用關鍵字做標識符
- 對于類名和方法名的標識符,一般將每個單詞的首字母大寫,如StudentInfo;字段及變量名首單詞的首字母小寫,其他單詞首字母大寫
三、常量
常量使用const關鍵字來定義,常量在聲明時必須賦值,且以后不能再對其賦值 eg:const int a = 10;
四、數據類型
C#中的數據可以分為兩大類:值類型(Value Type)和引用類型(Reference Type)。
值類型包括: 結構體(數值類型,bool型,用戶定義的結構體),枚舉,可空類型
引用類型包括: 數組,接口,委托,類(用戶自定義類、String類、Object類)
值類型的對象,繼承自System.ValueType類(此類的對象卻是引用類型的),內容直接儲存在棧上(以及MSDN中提到的“或在結構中以內聯方式分配的”——“or allocated inline in a structure”);引用類型的對象,其內容存儲于堆上,棧上的相應變量名下只存儲該處的堆地址,長度為4字節/32位(32位操作系統)或者8字節/64位(64位操作系統)。
值類型的對象不能為null。不能從已有的值類型派生新的數據類型。
棧的特點:存放數據類型(值類型),其優點:比在堆上分配空間更快;用完之后立即自動釋放;賦值方便(使用等號)
堆的特點:存放引用類型。
值類型的數據類型全部繼承自System.ValueType類,它們又分為以下幾類:
C#系統自定義了13種數值類型的數據類型:
整型 9種:byte, short, int(系統默認), long sbite, ushort, uint, ulong,char? ----類型裝換Convert 類
| byte | 0至28-1(128) | System.Byte | Yes | 1字節/8位 |
| sbyte | -27至27-1 | System.SByte | No | 1字節/8位 |
| ushort | 0至216-1(65535) | System.UInt16 | No | 2字節/16位 |
| short | -215至215-1 | System.Int16 | Yes | 2字節/16位 |
| char | \0000至\ffff | System.Char | Yes | 2字節/16位 |
| uint | 0至232-1(約4.29×109) | System.UInt32 | No | 4字節/32位 |
| int | -231至231-1 | System.Int32 | Yes | 4字節/32位 |
| ulong | 0至264-1(約1.84×1019) | System.UInt64 | No | 8字節/64位 |
| long | -263至263-1 | System.Int64 | Yes | 8字節/64位 |
浮點型3種:float, double(系統默認), decimal
?
| float(單精度) | ±1.5×10-45至±3.4×1038 | System.Single | Yes | 7位 | 4字節/32位 | float f = 3.14f? |
| double(雙精度) | ±5.0×10-324至±1.7×10308 | System.Double | Yes | 15至16位 | 8字節/64位 | double d = 2.14? |
| decimal(高精度) | ±1.0×10-28至±7.9×1028 | System.Decimal | Yes | 28至29位 | 16字節/128位 | ?decimal d = 2.13M |
布爾型(邏輯)1種:bool
可能的取值為true和false,占用內存長度1字節/8位。C#中不再有類似于“零等于flase,非零int值等于true”的變換。bool型的系統名稱為System.Boolean,屬于CLS.
其他2種:
enum 枚舉
枚舉的數據類型的聲明:[屬性(attributes)] [訪問標識(modifiers)] enum 名稱(identifier) [:基類型(base-type)] {枚舉列表(enumerator-list)} [;]
枚舉類型的本意有兩點:一是將難以記憶的整型數常量(除char外的8種整型數都可以)標記為更好理解的變量名。二是引入強類型,在需要采用整形數常量表示的變量之間建立屏障。雖然每個字符串代表了一個整形數常量,但是具體使用枚舉類數據類型的整型數常量時仍需要強制類型轉換。這個整數值在C#默認是int型的。
枚舉列表中各個變量的賦值默認是從0開始,遞加1的。
例如:enum days:int {Sat, Sun, Mon}; 取值(int)days.Sun為1 或 enum days:int {Sat=1, Sun, Mon}; 取值(int)days.Sun為2
?? struct 結構體
用戶自定義的值類型數據類型,和類相似也有不同(有篇博客具體介紹過);本身沒有繼承這一特點,因此與繼承相關的一切(例如抽象方法)結構體均不具備,除了兩點:所有的結構體繼承自System.Object類、結構體可以繼承(實現)接口。
| 引用類型 | 值類型 |
| 必須通過new實例化 | 可以不new,直接聲明,但聲明后必須賦值 |
| 方法不受限制(有、無參數均可,默認是無參) | 方法必須帶有參 |
| 自身繼承System.Object,可繼承(包含接口),也可被繼承 | 除自身繼承System.ValueType外,不可繼承(除接口,通常叫做實現接口),也不可被繼承 |
| 字段聲明時可賦值(初始化) | 字段聲明時不可賦值,方法一般公有 |
| 傳遞的是引用(值一但修改所有指向改類值都已改變) | 傳遞的是實際值(值修改不會影響其它指向值,除非被ref修飾;ref修飾后傳遞引用) |
性能介紹:結構是值類型,所以會影響性能,但根據使用結構的方式,這種影響可能是正面的,也可能是負面的。正面的影響是為結構分配內存時,速度非常快,因為它們將內聯或者保存在堆棧中。在結構超出了作用域被刪除時,速度也很快。另一方面,只要把結構作為參數來傳遞或者把一個結構賦給另一個結構(例如A=B,其中A和B是結構),結構的所有內容就被復制,而對于類,則只復制引用。這樣,就會有性能損失,根據結構的大小,性能損失也不同。注意,結構主要用于小的數據結構。但當把結構作為參數傳遞給方法時,就應把它作為ref參數傳遞,以避免性能損失——此時只傳遞了結構在內存中的地址,這樣傳遞速度就與在類中的傳遞速度一樣快了。另一方面,如果這樣做,就必須注意被調用的方法可以改變結構的值。
五、操作符
分類:
| = |
| +=,-=,*=,/=,%= |
| +,-,*,/,%(?二元運算符),++,--(?一元運算符) |
| >,<,>=,<=,!=,== |
| &&(遇假為假),||(同真為真),! |
| &,|,^,~,<<,>> |
| 幾乎所有的操作符都只能操作基本數據類型,但是”=”,”==”和”!=”, 這些操作符能操作所有的對象。除此以外String類支持”+”和”+=”。 |
優先級:
| [] . (params) expr++ expr-- |
| ++expr --expr +expr -expr ~ ! |
| new (type)expr |
| ?* / % |
| ?+ -? |
| << >> >>> |
| < > <= >= instanceof |
| == != |
| & |
| ^ |
| | |
| && |
| || |
| ? |
| = += -= *= /= %= &= ^= |= <<= >>= >>>= |
| 上面的操作數優先級從上到下依次降低,同一個單元格內的優先級相同 |
六、循環?? 注:[]表示可有可無
while (先判斷后執行,)
用法:while(循環條件){循環體}?
其它用法:while(變量名){ case 變量值1:[執行語句] break;······default:[執行語句] break;}
do-while (先執行一次再判斷)
用法:do{循環體}while(循環條件);
for (和while類似,先判斷)
用法:for([初始化循環變量];[循環條件];[修改循環變量值]){循環體}
foreach (遍歷)
用法:foreach(類型 變量名 in 類型數據列表){}
擴展:continue(跳出本次循環進行下次循環)、break(跳出整個循環)、return(跳出整個方法,可有可無返回值)
七、數組
一維數組:類型[] 變量名 = new 類型[長度];
多維數組(矩形數組):類型[,] 變量名 = new?類型[外長度,內長度];--注:[]里的,等于幾維減1
交錯數組(數組的數組):類型[][] 變量名 = 類型[長度][];?
轉載于:https://www.cnblogs.com/wenmaoyu/p/3159801.html
總結
以上是生活随笔為你收集整理的1.0 基础、标示符、常量、数据类型(enum 枚举,struct 结构体)、操作符、循环、数组...的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: XenServer安全重启xapi的方法
- 下一篇: node.js的异步