1.0 基礎、標示符、常量、數據類型(enum 枚舉,struct 結構體)、操做符、循環、數組

1、程序

  • 現實生活中,程序是指完成某些事務的一種既定方法和過程,能夠把程序當作是一系列動做執行過程的描述。
  • 在計算機世界,程序是指令,即爲了讓計算機執行某些操做或解決某個問題而編寫的一系列有序指令的集合
  • 程序=數據結構(指程序中的特定數據類型和數據組織形式)+算法(算法是指爲達到某個目的所要執行的操做步驟)

2、標示符

  • 標識符用來表示程序中的一個特定元素,如類名、方法名、變量名、項目名等等
  • 標識符能夠是字母、數字、下劃線及「@」,可是必須以字母、下劃線及@開頭,不能以數字開頭
  • 標識符嚴格區分大小寫
  • 可使用中文作爲標識符,但不建議使用
  • 不能使用關鍵字作標識符
  • 對於類名和方法名的標識符,通常將每一個單詞的首字母大寫,如StudentInfo;字段及變量名首單詞的首字母小寫,其餘單詞首字母大寫

3、常量

  常量使用const關鍵字來定義,常量在聲明時必須賦值,且之後不能再對其賦值 eg:const int a = 10;算法

4、數據類型

C#中的數據能夠分爲兩大類:值類型(Value Type)和引用類型(Reference Type)。數組

值類型包括: 結構體(數值類型,bool型,用戶定義的結構體),枚舉,可空類型數據結構

引用類型包括: 數組,接口,委託,類(用戶自定義類、String類、Object類)ide

值類型的對象,繼承自System.ValueType類(此類的對象倒是引用類型的),內容直接儲存在棧上(以及MSDN中提到的「或在結構中之內聯方式分配的」——「or allocated inline in a structure」);引用類型的對象,其內容存儲於堆上,棧上的相應變量名下只存儲該處的堆地址,長度爲4字節/32位(32位操做系統)或者8字節/64位(64位操做系統)。函數

值類型的對象不能爲null。不能從已有的值類型派生新的數據類型。post

棧的特色:存放數據類型(值類型),其優勢:比在堆上分配空間更快;用完以後當即自動釋放;賦值方便(使用等號)性能

堆的特色:存放引用類型。ui

值類型的數據類型所有繼承自System.ValueType類,它們又分爲如下幾類:spa

C#系統自定義了13種數值類型的數據類型:
整型 9種:byte, short, int(系統默認), long sbite, ushort, uint, ulong,char  ----類型裝換Convert 類操作系統

 名稱

值範圍

系統名稱

屬於CLS

佔用內存長度

byte

028-1(128)

System.Byte

Yes

1字節/8

sbyte

-2727-1

System.SByte

No

1字節/8

ushort

0216-1(65535)

System.UInt16

No

2字節/16

short

-215215-1

System.Int16

Yes

2字節/16

char

\0000\ffff

System.Char

Yes

2字節/16

uint

0232-1(4.29×109)

System.UInt32

No

4字節/32

int

-231231-1

System.Int32

Yes

4字節/32

ulong

0264-1(1.84×1019)

System.UInt64

No

8字節/64

long

-263263-1

System.Int64

Yes

8字節/64

浮點型3種:float, double(系統默認), decimal

 

名稱 

值範圍

系統名稱

屬於CLS

精度

佔用內存長度

實例

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

1516

8字節/64

double d = 2.14 

decimal(高精度)

±1.0×10-28±7.9×1028

System.Decimal

Yes

2829

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參數傳遞,以免性能損失——此時只傳遞告終構在內存中的地址,這樣傳遞速度就與在類中的傳遞速度同樣快了。另外一方面,若是這樣作,就必須注意被調用的方法能夠改變結構的值。      

5、操做符

分類:

賦值操做符: =
複合賦值運算符: +=,-=,*=,/=,%=
算數運算符: +,-,*,/,%(ß二元運算符),++,--(ß一元運算符)
條件運算符: >,<,>=,<=,!=,==
邏輯運算符: &&(遇假爲假),||(同真爲真),!
位運算符: &,|,^,~,<<,>>
備註:

幾乎全部的操做符都只能操做基本數據類型,可是」=」,」==」和」!=」,

這些操做符能操做全部的對象。除此之外String類支持」+」和」+=」。

優先級:

postfix operators

[] . (params) expr++ expr--

unary operators ++expr --expr +expr -expr ~ !
creation or cast

new (type)expr

multiplicative  * / %
additive  + - 
shift

<< >> >>>

relational

< > <= >= instanceof

equality == !=
bitwise AND &
bitwise exclusive OR

^

bitwise inclusive OR

|

logical AND &&
logical OR ||

conditional

?
assignment = += -= *= /= %= &= ^= |= <<= >>= >>>=
備註 上面的操做數優先級從上到下依次下降,同一個單元格內的優先級相同

6、循環   注:[]表示無關緊要

  while (先判斷後執行,)  

    用法:while(循環條件){循環體} 

  其它用法:while(變量名){ case 變量值1:[執行語句] break;······default:[執行語句] break;}

  do-while (先執行一次再判斷)

    用法:do{循環體}while(循環條件);

  for (和while相似,先判斷)

    用法:for([初始化循環變量];[循環條件];[修改循環變量值]){循環體}

  foreach (遍歷)

    用法:foreach(類型 變量名 in 類型數據列表){}

  擴展:continue(跳出本次循環進行下次循環)、break(跳出整個循環)、return(跳出整個方法,無關緊要返回值)

7、數組

  一維數組:類型[] 變量名 = new 類型[長度];

  多維數組(矩形數組):類型[,] 變量名 = new 類型[外長度,內長度];--注:[]裏的,等於幾維減1

  交錯數組(數組的數組):類型[][] 變量名 = 類型[長度][]; 

相關文章
相關標籤/搜索