1.1 什麼是.NET Framework
.NET Framework是Microsoft爲開發應用程序創建的一個平臺。通過它可以創建Windows應用程序、Web應用程序、Web服務和其他類型的應用程序。
1.2 .Net Framework的內容
.Net Framework主要包含一個非常大的代碼庫。它定義了一些基本類型,稱爲通用類型系統(Common Type System, CTS),它還包含了.NET 公共語言運行時(Common Language Runtime, LCR)它負責管理用.NET庫開發的所有應用程序的執行。
1.3 什麼是C#
C#是可用於創建要運行在.NET CLR上的應用程序語言之一。
1.4 執行程序
F5啓動調試
Ctrl+F5 不調試,直接運行
1.5 簡單數據類型
這些類型中的每一種都利用了.NET Framework中定義的標準類型。
在C#中這些類型的名稱是.NET Framework中定義的別名。
(整數)
類型 |
別名 |
允許的值 |
sbyte |
System.SByte |
[-128, 127] |
byte |
Syste.Byte |
[0, 255] |
short |
System.Int16 |
[-32767, 32767] |
ushort |
System.UInt16 |
[0, 65535] |
int |
System.Int32 |
[-2147483648, 2147483647] |
uint |
System.UInt32 |
[0, 4294967295] |
long |
System.Int64 |
[-9223372036854775808, 9223372036854775807] |
ulong |
System.UInt64 |
[0, 18446744073709551615] |
(浮點數)
類型 |
別名 |
最小值 |
最大者 |
float |
System.Single |
1.5*10(-45) |
3.4*10(38) |
double |
System.Double |
5*10(-324) |
1.7*10(308) |
decimal |
System.Decimal |
1.0*10(-28) |
7.9*10(28) |
除了數值類型外,還有三種簡單數據類型:
類型 |
別名 |
允許的值 |
Char |
System.Char |
一個Unicode字符,0-65535之間的整數 |
bool |
System.Boolean |
布爾值:true或false |
string |
System.String |
一組字符 |
1.6 變量的命名
基本的變量命名規則如下:
l 變量名的第一個字符必須是字母,下劃線或者@
l 其後的字符可以是字母、下劃線或數字
命名約定:
.NET Framework名稱空間中有兩種命名約定,稱爲PascalCase和camelCase
PasscalCase約定:名稱中的每個單詞除了第一個字母大寫外,其餘都是小寫
camelCase約定:第一個單詞以小寫字母開頭
1.7 字面值
類型 |
類別 |
後綴 |
範例/允許的值 |
Bool |
布爾 |
無 |
true/false |
int,uint,long,ulong |
整數 |
無 |
100 |
uint,ulong |
整數 |
u/U |
100U |
long ulong |
整數 |
l/L |
100L |
ulong |
整數 |
Ul,uL,Ul,UL,lu,lU,Lu,LU |
100UL |
float |
實數 |
f/F |
1.5F |
double |
實數 |
無或d/D |
1.5 |
decimal |
實數 |
m/M |
1.5M |
char |
字符 |
無 |
‘a’或轉義序列 |
string |
字符串 |
無 |
“a…” |
1.8 字符串的字面值
下表爲可以在字符串的字面值中使用的轉義序列
轉義序列 |
產生的字符 |
Unicode碼 |
/’ |
單引號 |
0x0027 |
/” |
雙引號 |
0x0022 |
// |
反斜槓 |
0x005C |
/0 |
空 |
0x0000 |
/a |
警告(響鳴) |
0x0007 |
/b |
退格 |
0x0008 |
/f |
換頁 |
0x000C |
/n |
換回 |
0x000A |
/r |
回車 |
0x000D |
/t |
水平製表符 |
0x0009 |
/v |
垂直製表符 |
0x000B |
也可以逐字地指定字符串,即兩個雙引號之間的所有字符都包含在字符串中,包括行末字符和需要轉義的字符。
如:”Karli/’s name”
@”Karli’s name”
1.9 變量聲明和賦值
變量在使用前,必須被初始化,否則編譯將出錯。可以先定義變量然後賦值,也可以定義的時候就賦值。
2.0 數學運算符
有5個簡單的數學運算符,其中2個有一元和二元兩種形式。
運算符 |
類別 |
範例 |
結果 |
+ |
二元 |
var1=var2+var3; |
求和後將結果賦值給var1 |
- |
二元 |
var1=var2-var3; |
相減後將結果賦值給var1 |
* |
二元 |
var1=var2*var3; |
相乘後將結果賦值給var1 |
/ |
二元 |
var1=var2/var3; |
相除後將結果賦值給var1 |
% |
二元 |
var1=var2%var3; |
求餘後將結果賦值給var1 |
+ |
一元 |
var1= +var2; |
var1的值等於var2的值 |
- |
一元 |
var1= -var2; |
var1的值等於var2的值乘-1 |
遞增遞減運算符
運算符 |
類別 |
範例 |
結果 |
++ |
一元 |
var1= ++var2; |
var1的值是var2+1 var2遞增1 |
-- |
一元 |
var1= --var2; |
var1的值是var2-1 var2遞減1 |
++ |
一元 |
var1= var2++; |
var1的值是var2 var2遞增1 |
-- |
一元 |
var1= var2--; |
var1的值是var2 var2遞減1 |
賦值運算符
運算符 |
類別 |
範例 |
結果 |
= |
二元 |
var1=var2; |
var1被賦值爲var2的值 |
+= |
二元 |
var1+=var2; |
var1 = var1 + var2; |
-= |
二元 |
var1-=var2; |
var1 = var1 – var2; |
*= |
二元 |
var1*=var2; |
var1 = var1 * var2; |
/= |
二元 |
var1/=var2; |
var1 = var1 / var2; |
%= |
二元 |
var1%=var2; |
var1 = var1 % var2; |
運算符優先級
優先級 |
運算符 |
優先級由高到低 |
++, --(用作前綴), +, -(一元) |
* , /, % |
|
+, - |
|
==, *=, /=, %=, +=, -= |
|
++, --(用於後綴) |
流程控制
1. 布爾邏輯
六個比較運算符:== != < > <= >=
四個位運算符:& | ^ ~
四個布爾運算符:! & | ^
兩個布爾運算符:&& ||
兩組布爾運算符計算的結果一樣。只是後者性能較好!作爲一個規則,儘可能使用&&和||運算符。
2. 移位運算符
>> 右移操作符
<< 左移操作符
3. 布爾賦值運算符
&= |= ^=
4. 移位賦值運算符
>>= <<=
5. 運算符優先級
優先級 |
運算符 |
優先級由高到低 |
++,--(用作前綴),(),+,-(一元),!,~ |
*,/,% |
|
+,- |
|
<<,>> |
|
<,>,<=,>= |
|
==,!= |
|
& |
|
^ |
|
| |
|
&& |
|
|| |
|
=,*=,/=,%=,+=,-=,<<=,>>=,&=,^=,|= |
|
++,--(用作後綴) |
6. 分支
C#提供三種分支技術:三元運算符、if語句、switch語句
switch語句和C++是有區別的,在C++中,可以運行完一個case後,運行另一個case語句。C#中每個case後必須有break語句,default後也需要用break語句。
不過這一規則可以有一個例外:如果把多個case語句放在一起(堆疊他們),如
switch(<testVar>)
{
case a:
case b:
…
break;
default:
…
break;
} 則只要條件滿足a或者b都會執行b後面的語句。
7. 循環
do…while語句,while語句,for語句用法和C++一樣。
變量的更多內容
1. 類型轉換
a.隱式轉換
b.顯式轉換
2. 枚舉的定義:
enum typeName
{
value1,
value2,
value3…
valueN
}
接着聲明這個新類型的變量:typeName varName;
並賦值:varName = typeName.value;
枚舉使用一個基本類型類存儲。默認情況下該類型爲int。在枚舉聲明中添加類型,可以指定其他基本類型:
enum typeName : underlyingType
{
value1,
value2,
value3…
valueN
}
枚舉的基本類型可以是byte,sbyte,short,ushort,int,uint,long,ulong
默認情況下,每個值會根據定義的順序(從0開始)自動賦給對應的基本類型值。
要獲得枚舉變量的值,可以用顯式類型轉換
要獲得枚舉變量的字符串值,可以使用Convert.ToString()或者用變量本身的ToString()命令。
可以把string轉換爲枚舉值,但語法較複雜:
(enumerationType)Enum.Parse(typeof(enumerationType), enumerationValueString);
例子:
string myString = “north”;
orientation myDirection = (orientation)Enum.Parse(typeof(orientation), myString);
3. 結構
使用struct關鍵字來定義
struct <typeName>
{
<memberDeclarations>
}
<memberDeclarations>部分包含變量的定義,格式與往常一樣。每個成員的聲明採用如下形式:
<accessibility> <type> <name>;
要讓調用結構的代碼訪問該結構的數據成員,可以對accessibility使用關鍵字public
4. 數組
聲明數組:
<baseType> [] <name>
其中<baseType>可以是任何變量類型,包括前面介紹的枚舉和結構類型。
數組在訪問前必須初始化。有兩種方式可初始化數組:
int[] myIntArray = {5,9,10,2,88};
int[] myIntArrat = new int[5];
也可以使用非常理的變量來初始化:
int[] myIntArray = new int[arraySize];
還可以用兩種初始化方式的組合:
int[] myIntArray = new int[5]{5,9,10,2,88};
使用這種方式,數組大小必須與元素個數匹配,不能編寫如下代碼:
int[] myIntArray = new int[10]{5,9,10,2,88};
如果這種組合方式用變量來定義大小,則會編譯失敗。大小必須用一個常量:
const int arraySize = 5;
int[] myIntArray = new int[arraySize[] {5,9,10,2,88};
用for each遍歷數組元素的語法:
foreach(<baseType> <name> in <array>)
{
…
}
string[] friendsName = {“Robert Barwell”, “Mike Parry”, “Jeremy Beacock”};
foreach(string name in friendsName)
{
Console.writeLine(“Name is {0}”, name);
}
使用這種方法和標準for循環訪問數組的區別是foreach循環對數組的內容是隻讀的,不能改變任何元素的值。