MOOC C#筆記(一):數據類型

C#筆記

基礎知識

一個C#程序主要包括以下部分:
命名空間聲明(Namespace declaration)
一個 class
Class 方法
Class 屬性
一個 Main 方法
語句(Statements)& 表達式(Expressions)
關於Main函數的一些注意事項:C#中Main()函數爲什麼必須是靜態的?
註釋

數據類型、變量與常量

程序的基本任務是:對數據進行處理。
數據分爲變量(variable)與常量(literal)
int age=18;
變量的值可以改變,本質上是內存的空間,用來存儲信息。
常量的值是固定的,直接寫出來,稱字面常量(literal)

關於字面量、常量和變量有什麼區別:

1,在計算機科學中,字面量(literal)是用於表達源代碼中一個固定值的表示法(notation)。幾乎所有計算機編程語言都具有對基本值的字面量表示,諸如:整數、浮點數以及字符串;而有很多也對布爾類型和字符類型的值也支持字面量表示;還有一些甚至對枚舉類型的元素以及像數組、記錄和對象等複合類型的值也支持字面量表示法。
2,“常量”在程序運行時,不會被修改的量。換言之,常量雖然是爲了硬件、軟件、編程語言服務,但是它並不是因爲硬件、軟件、編程語言而引入。
常量區分爲不同的類型,如25、0、-8爲整形常量,6.8、-7.89爲實型常量,‘a’‘b’爲字符常量。常量一般從其字面形式即可判斷。這種常量稱爲字面常量或直接常量。
3,變量來源於數學,是計算機語言中能儲存計算結果或能表示值抽象概念。變量可以通過變量名訪問。在指令式語言中,變量通常是可變的;但在純函數式語言(如Haskell)中,變量可能是不可變(immutable)的。在一些語言中,變量可能被明確爲是能表示可變狀態、具有存儲空間的抽象(如在Java和Visual Basic中);但另外一些語言可能使用其它概念(如C的對象)來指稱這種抽象,而不嚴格地定義“變量”的準確外延。

變量命名(identifier,標識符)要遵守如下規則:

(1)不能是C#關鍵字。
(2)由字母、數組、下劃線構成。
(3)第一個字符必須是字母或下劃線。
(4)不要太長,一般不超過31個字符爲宜。
(5)變量名最好不要與庫函數、類名相同。
與C/C++類似,與C/C++一樣C#是大小寫敏感的。
變量命名方法:匈牙利命名法

數據類型

數據類型:本質上是數據存儲方式及其能參與的運算的抽象。
如圖:
數據類型
C#數據類型分兩大類:
1.值類型(Value Type)
2.引用類型(Reference Type)
前者如:int,double,Point,Size,DataTime。
後者如:Button,Label,Book,Person。
兩者的區別在於類型是直接存儲在對應的空間內,而引用類型則在對應的位置存儲一個指針(或者叫引用),該指針指向對應的數據。
任何變量都有類型。
值類型包括:
簡單類型(Simple Type)
結構類型(Struct Type)
枚舉類型(Enum Type)
引用類型包括:
類類型(Class Type)
接口類型(Interface Type)
委託類型(Delegate)
數組類型(Array Type)
注意:每種簡單類型都有一個關鍵詞
int相當於System.Int32
double相當於System.Double
bool相當於System.Boolean
string相當於System.String
(如果using System,則string相當於String)

關於數據類型的一些細節

整數類型又分爲:
有符號 sbyte short int long 和87L,0x1F(注:沒有八進制寫法)
無符號 byte ushort uint ulong 如87UL
字符類型 char 如'a' '\uA0B1'表示Unicode'\n'(回車)
實數類型又分爲:
float 如3.14F
double 如3.14 1.5E-3 3.14D(後面這個D可以省略)
十進制類型
Decimal 如120.50M
布爾類型
bool 如true false(小寫)不能用0和1代替(區別於C/C++)

字符類型

char型數據用來表示通常意義上“字符”。
字符變量是用單引號括起來的單個字符。
char c='A';
C#字符采用Unicode編碼,每個字符佔兩個字節,因而可用十六進制編碼形式表示
char c1='\u0061';
C#語言中還允許使用轉義字符''來將後面的字符轉變爲其它的含義。
char c2='\n'; //代表換行符
轉義字符與C語言中的類似,值得一提的是\r 與\n的不同,\r表示回車,\n表示換行。

字符串類型

是引用類型,但對字符串常量有特殊處理。
字符串前可以使用@,加了@的字符串可以換行寫,可以不進行\轉義,可以換行,雙引號則用兩個雙引號表示一個雙引號。
針對C++程序員來說,引用類型與值類型是由其類型定義的,而不是由其使用決定的(不存在*&這些符號類指定類型的類型)。

C#新版本中的特殊類型

1.推斷類型(C#3.0)
var a=1+2; var表示其類型又編譯器推斷,而不是自己指定。
2.Nullable類型(C#3.0)
int? a=32;可以有值可以沒有值,在數據庫中常用。
3.Dynamic(C#4.0)由DLR支持
編譯時不檢查,運行時才確定,主要用於與COM組件或其他語言交互。

運算符與表達式

運算符

基本與C/C++類似,不贅述,多了一個字符串連接運算符:+。
+運算符兩側的操作數中只要有一個是字符串(String)類型,系統會自動將另一個操作數轉換爲字符串然後在進行連接

表達式

表達式是符合一定語法規則的運算符和操作數的序列。
表達式有類型和值,對表達式中的操作數進行運算得到的結果稱爲表達式的值。該值的類型稱爲表達式的類型。
賦值時的默認類型轉換與C/C++的原則是一致的,值得一提的是C#中的強制類型轉換:
字符串轉換成數值:
double.Parse(s) int.Parse(s)
數字轉成字符串:
10.ToString() 使用方法ToString();
""+10; 使用字符連接運算符來把數字轉換成字符串。
使用Convert
Convert.ToInt32(textbox1.Text)
Convert.ToDouble("123.45")
Convert.ToDateTime*("2019-10-01 14:00")

流程控制語句

結構化的程序設計的三種基本流程:順序、選擇、循環。

順序語句

方法調用語句和賦值語句都爲順序語句(簡單語句)
C#中沒有表達式語句這一概念。

分支語句

if-else與C語言的if-else一 致。
在VS中按Ctrl+E+D(格式文檔)
按Ctrl+E+F(格式化選中部分)
switch語句與C/C++不同的是,變量可以爲字符串類型。
另外如果在C#中switch語句不加break編譯器會報錯。

循環語句

循環五要素:
初始化部分
循環條件部分
循環體部分
迭代部分,我們稱爲“循環改變”
結束後處理

C#中的數組(與C/C++大不相同)

C#中的數組是引用類型。
以下爲數組的聲明方式:
int[] a1;注意方括號寫到變量名的前面
C#中聲明數組時不能指定其長度(數組中元素的個數),這與C/C++不一樣。
每個數組都有一個屬性Length指明它的長度。
foreach語句可以方便的處理數組、集合中的各元素。(不可以在foreach中改變數組的內容,只讀式遍歷)。
C#中的多維數組與交錯數組是不同的概念,這與C/C++似乎不同,因爲在C/C++中我們一般把多維數組看做數組的數組,然而在C#中只有交錯數組才被看做數組的數組。
多維數組和交錯數組的區別詳見:C# 多維數組 交錯數組的區別

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章