上期回顧 - https://www.cnblogs.com/liu-jinxin/p/10818256.html
一、變量
一個變量只不過是一個供程序操作的存儲區的名字。在 C# 中,每個變量都有一個特定的類型,類型決定了變量的內存大小和布局。范圍內的值可以存儲在內存中,可以對變量進行一系列操作
(一)、變量的分類
C# 中提供的基本的值類型大致可以分為以下幾類:
類型 | 舉例 |
整數類型 | sbyte、byte、short、ushort、int、uint、long、ulong 和 char |
浮點型 | float 和 double |
十進制類型 | decimal |
布爾類型 | true 或 false 值,指定的值 |
空類型 | 可為空值的數據類型 |
取值的范圍:(一些變量名稱前面的“u”是unsigned的簡稱,表示該類型存儲的是大於0的整數)
類型 | 別名 | 范圍 |
sbyte | System.SByte | 在-128~127之間的整數 |
byte | System.Byte | 在0~255之間的整數 |
short | System.Int16 | 在-32768~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之間的整數 |
char | System.Char | 一個Unicode字符,存儲0~65535之間的整數 |
bool | System.Boolean | 布爾值:true或false |
float | System.Single | 32位浮點值 7位小樹,范圍在+-1.5x10-45 ~~~~ +-3.4x10+38 |
decimal | System.Decimal | 有符號128位數據,有28到29位有效位,范圍大概在+-1.0x10-28 ~~ +-7.9x10+28 |
double | System.Double | 64位浮點值,有15到16位的小樹,范圍在+-5.0X10-324 ~1.7x10+308 |
float / decimal / double之間的區別:
1、float 單精度浮點 32bit,
double 雙精度浮點64bit,
decimal是高精度 128bit,浮點型。
2、float double 是 基本類型(primitive type),decimal不是。
3、decimal的有效位數很大,達到了28位,但是表示的數據范圍卻比float和double類型小。
4、常數寫法:
float f = 12.3F; (帶F)
double x=12.3; (不帶就是double)
decimal d = 12.30M; (帶M)
C# 允許定義其他值類型的變量,比如 enum,也允許定義引用類型變量,比如 class。這些我們將在以后的章節中進行討論。在本章節中,我們只研究基本變量類型
(二)、變量的定義
語法:<data_type> <variable_list>;
代碼示例:

1 namespace VariableDefinition 2 { 3 class Program 4 { 5 static void Main(string[] args) 6 { 7 /* 聲明 */ 8 int a , b ; 9 string c ; 10 char d; 11 12 /* 實際初始化 */ 13 a = 10; 14 b = 20; 15 c = "abc"; 16 d = 'b'; 17 Console.WriteLine("a = {0}, b = {1}, c = {2}, d = {3}", a, b, c,d); 18 Console.ReadLine(); 19 } 20 } 21 }
二、常量
(一)、常量類型
1、整數常量
整數常量可以是十進制、八進制或十六進制的常量。前綴指定基數:0x 或 0X 表示十六進制,0 表示八進制,沒有前綴則表示十進制。整數常量也可以有后綴,可以是 U 和 L 的組合,其中,U 和 L 分別表示 unsigned 和 long。后綴可以是大寫或者小寫,多個后綴以任意順序進行組合。
2、浮點常量
一個浮點常量是由整數部分、小數點、小數部分和指數部分組成。您可以使用小數形式或者指數形式來表示浮點常量。使用小數形式表示時,必須包含小數點、指數或同時包含兩者。使用指數形式表示時,必須包含整數部分、小數部分或同時包含兩者。有符號的指數是用 e 或 E 表示的。
3、字符串常量
字符串常量是括在雙引號 "" 里,或者是括在 @"" 里。字符串常量包含的字符與字符常量相似,可以是:普通字符、轉義序列和通用字符。使用字符串常量時,可以把一個很長的行拆成多個行,可以使用空格分隔各個部分。
以下是各種類型的示例:
(二)、常量的定義
語法:const <data_type> <constant_name> = value;
代碼示例:

1 using System; 2 3 public class ConstTest 4 { 5 class SampleClass 6 { 7 public int x; 8 public int y; 9 public const int c1 = 5; 10 public const int c2 = c1 + 5; 11 12 public SampleClass(int p1, int p2) 13 { 14 x = p1; 15 y = p2; 16 } 17 } 18 19 static void Main() 20 { 21 SampleClass mC = new SampleClass(11, 22); 22 Console.WriteLine("x = {0}, y = {1}", mC.x, mC.y); 23 Console.WriteLine("c1 = {0}, c2 = {1}", 24 SampleClass.c1, SampleClass.c2); 25 } 26 }
使用場景:
1、用於在程序中一旦設定就不被修改的值,例如,圓周率的值。
2、用於在程序中經常被引用的值,例如,某個錯誤消息在程序中被多處引用,就可以定義為常量。
3、用於在程序中具有特定意義的值,例如,使用 1 表示登陸狀態 使用0表示離線狀態。
三、運算符
運算符是一種告訴編譯器執行特定的數學或邏輯操作的符號。C# 有豐富的內置運算符,分類如下:
算術運算符、關系運算符、邏輯運算符、位運算符、賦值運算符及其他運算符。
(一)、算術運算符
下表顯示了 C# 支持的所有算術運算符。假設變量 A 的值為 10,變量 B 的值為 20,則:
運算符 | 描述 | 實例 |
---|---|---|
+ | 把兩個操作數相加 | A + B 將得到 30 |
- | 從第一個操作數中減去第二個操作數 | A - B 將得到 -10 |
* | 把兩個操作數相乘 | A * B 將得到 200 |
/ | 分子除以分母 | B / A 將得到 2 |
% | 取模運算符,整除后的余數 | B % A 將得到 0 |
++ | 自增運算符,整數值增加 1 | A++ 將得到 11 |
-- | 自減運算符,整數值減少 1 | A-- 將得到 9 |
(二)、關系運算符
下表顯示了 C# 支持的所有關系運算符。假設變量 A 的值為 10,變量 B 的值為 20,則:
運算符 | 描述 | 實例 |
---|---|---|
== | 檢查兩個操作數的值是否相等,如果相等則條件為真。 | (A == B) 不為真。 |
!= | 檢查兩個操作數的值是否相等,如果不相等則條件為真。 | (A != B) 為真。 |
> | 檢查左操作數的值是否大於右操作數的值,如果是則條件為真。 | (A > B) 不為真。 |
< | 檢查左操作數的值是否小於右操作數的值,如果是則條件為真。 | (A < B) 為真。 |
>= | 檢查左操作數的值是否大於或等於右操作數的值,如果是則條件為真。 | (A >= B) 不為真。 |
<= | 檢查左操作數的值是否小於或等於右操作數的值,如果是則條件為真。 | (A <= B) 為真。 |
(三)、邏輯運算符
下表顯示了 C# 支持的所有邏輯運算符。假設變量 A 為布爾值 true,變量 B 為布爾值 false,則:
運算符 | 描述 | 實例 |
---|---|---|
&& | 稱為邏輯與運算符。如果兩個操作數都非零,則條件為真。 | (A && B) 為假。 |
|| | 稱為邏輯或運算符。如果兩個操作數中有任意一個非零,則條件為真。 | (A || B) 為真。 |
! | 稱為邏輯非運算符。用來逆轉操作數的邏輯狀態。如果條件為真則邏輯非運算符將使其為假。 | !(A && B) 為真。 |
(四)、位運算符
下表列出了 C# 支持的位運算符。假設變量 A 的值為 60,變量 B 的值為 13,則:
運算符 | 描述 | 實例 |
---|---|---|
& | 如果同時存在於兩個操作數中,二進制 AND 運算符復制一位到結果中。 | (A & B) 將得到 12,即為 0000 1100 |
| | 如果存在於任一操作數中,二進制 OR 運算符復制一位到結果中。 | (A | B) 將得到 61,即為 0011 1101 |
^ | 如果存在於其中一個操作數中但不同時存在於兩個操作數中,二進制異或運算符復制一位到結果中。 | (A ^ B) 將得到 49,即為 0011 0001 |
~ | 按位取反運算符是一元運算符,具有"翻轉"位效果,即0變成1,1變成0,包括符號位。 | (~A ) 將得到 -61,即為 1100 0011,一個有符號二進制數的補碼形式。 |
<< | 二進制左移運算符。左操作數的值向左移動右操作數指定的位數。 | A << 2 將得到 240,即為 1111 0000 |
>> | 二進制右移運算符。左操作數的值向右移動右操作數指定的位數。 | A >> 2 將得到 15,即為 0000 1111 |
(五)、賦值運算符
下表列出了 C# 支持的賦值運算符:
運算符 | 描述 | 實例 |
---|---|---|
= | 簡單的賦值運算符,把右邊操作數的值賦給左邊操作數 | C = A + B 將把 A + B 的值賦給 C |
+= | 加且賦值運算符,把右邊操作數加上左邊操作數的結果賦值給左邊操作數 | C += A 相當於 C = C + A |
-= | 減且賦值運算符,把左邊操作數減去右邊操作數的結果賦值給左邊操作數 | C -= A 相當於 C = C - A |
*= | 乘且賦值運算符,把右邊操作數乘以左邊操作數的結果賦值給左邊操作數 | C *= A 相當於 C = C * A |
/= | 除且賦值運算符,把左邊操作數除以右邊操作數的結果賦值給左邊操作數 | C /= A 相當於 C = C / A |
%= | 求模且賦值運算符,求兩個操作數的模賦值給左邊操作數 | C %= A 相當於 C = C % A |
<<= | 左移且賦值運算符 | C <<= 2 等同於 C = C << 2 |
>>= | 右移且賦值運算符 | C >>= 2 等同於 C = C >> 2 |
&= | 按位與且賦值運算符 | C &= 2 等同於 C = C & 2 |
^= | 按位異或且賦值運算符 | C ^= 2 等同於 C = C ^ 2 |
|= | 按位或且賦值運算符 | C |= 2 等同於 C = C | 2 |
(六)、其他運算符
下表列出了 C# 支持的其他一些重要的運算符,包括 sizeof、typeof 和 ? :。
運算符 | 描述 | 實例 |
---|---|---|
sizeof() | 返回數據類型的大小。 | sizeof(int),將返回 4. |
typeof() | 返回 class 的類型。 | typeof(StreamReader); |
& | 返回變量的地址。 | &a; 將得到變量的實際地址。 |
* | 變量的指針。 | *a; 將指向一個變量。 |
? : | 條件表達式 | 如果條件為真 ? 則為 X : 否則為 Y |
is | 判斷對象是否為某一類型。 | If( Ford is Car) // 檢查 Ford 是否是 Car 類的一個對象。 |
as | 強制轉換,即使轉換失敗也不會拋出異常。 | Object obj = new StringReader("Hello"); StringReader r = obj as StringReader; |
(七)、優先級
類別 | 運算符 | 結合性 |
---|---|---|
后綴 | () [] -> . ++ - - | 從左到右 |
一元 | + - ! ~ ++ - - (type)* & sizeof | 從右到左 |
乘除 | * / % | 從左到右 |
加減 | + - | 從左到右 |
移位 | << >> | 從左到右 |
關系 | < <= > >= | 從左到右 |
相等 | == != | 從左到右 |
位與 AND | & | 從左到右 |
位異或 XOR | ^ | 從左到右 |
位或 OR | | | 從左到右 |
邏輯與 AND | && | 從左到右 |
邏輯或 OR | || | 從左到右 |
條件 | ?: | 從右到左 |
賦值 | = += -= *= /= %=>>= <<= &= ^= |= | 從右到左 |
逗號 | , | 從左到右 |
四、判斷
判斷結構要求程序員指定一個或多個要評估或測試的條件,以及條件為真時要執行的語句(必需的)和條件為假時要執行的語句(可選的)。
下面是大多數編程語言中典型的判斷結構的一般形式:

(一)、判斷語句
C# 提供了以下類型的判斷語句。點擊鏈接查看每個語句的細節。
語句 | 描述 |
---|---|
if 語句 | 一個 if 語句 由一個布爾表達式后跟一個或多個語句組成。 |
if...else 語句 | 一個 if 語句 后可跟一個可選的 else 語句,else 語句在布爾表達式為假時執行。 |
嵌套 if 語句 | 您可以在一個 if 或 else if 語句內使用另一個 if 或 else if 語句。 |
switch 語句 | 一個 switch 語句允許測試一個變量等於多個值時的情況。 |
嵌套 switch 語句 | 您可以在一個 switch 語句內使用另一個 switch 語句。 |
(二)、三目表達式
實例如下:
m = a > b ? a : b;
表示先判斷a是否大於b,若a>b,則將a的值賦給m,若不符合a>b,則將b的值賦給m
五、循環
有的時候,可能需要多次執行同一塊代碼。一般情況下,語句是順序執行的:函數中的第一個語句先執行,接着是第二個語句,依此類推。編程語言提供了允許更為復雜的執行路徑的多種控制結構。
循環語句允許我們多次執行一個語句或語句組,下面是大多數編程語言中循環語句的一般形式:
(一)、循環的類型
C# 提供了以下幾種循環類型。點擊鏈接查看每個類型的細節。
循環類型 | 描述 |
---|---|
while 循環 | 當給定條件為真時,重復語句或語句組。它會在執行循環主體之前測試條件。 |
for/foreach 循環 | 多次執行一個語句序列,簡化管理循環變量的代碼。 |
do...while 循環 | 除了它是在循環主體結尾測試條件外,其他與 while 語句類似。至少會執行一次。 |
嵌套循環 | 您可以在 while、for 或 do..while 循環內使用一個或多個循環。 |
(二)、控制循環的語句
循環控制語句更改執行的正常序列。當執行離開一個范圍時,所有在該范圍中創建的自動對象都會被銷毀。
C# 提供了下列的控制語句。點擊鏈接查看每個語句的細節。
控制語句 | 描述 |
---|---|
break 語句 | 終止 loop 或 switch 語句,程序流將繼續執行緊接着 loop 或 switch 的下一條語句。 |
continue 語句 | 引起循環跳過主體的剩余部分,立即重新開始測試條件。 |
(三)、無限循環
1 using System; 2 namespace Loops 3 { 4 class Program 5 { 6 static void Main(string[] args) 7 { 8 for (; ; ) 9 { 10 Console.WriteLine("Hey! I am Trapped"); 11 } 12 } 13 } 14 }
如果條件永遠不為假,則循環將變成無限循環。for 循環在傳統意義上可用於實現無限循環。由於構成循環的三個表達式中任何一個都不是必需的,您可以將某些條件表達式留空來構成一個無限循環。
六:下期預告 - https://www.cnblogs.com/liu-jinxin/p/10826971.html
-> 方法
-> 可空類型
-> 數組
-> 字符串
-> 結構體
-> 枚舉
參考文獻:
1、https://www.runoob.com/csharp/csharp-variables.html
2、http://www.cnblogs.com/sunzhenyong/p/3809433.html
3、https://www.cnblogs.com/niyl/p/10146114.html
根據w3school自我溫習一下c#基礎,分享給大家。