【唐老獅】Unity系列之C#四部曲—C#入門

介紹
每句的命令記得用【分號】結束
命名空間:工具包
類:工具
函數(shù):工具的功能
----------------------------------------------------------
輸入與輸出
WriteLine(“內容”):打印后有空行,甚至可以用作空行符
Write("內容"):打印后沒空行
ReadLine():等待玩家輸入,按回車結束
ReadKey(): 檢測玩家是否按鍵,只要按了鍵盤上任意鍵,就會人為輸入結束
----------------------------------------------------------
注釋
----------------------------------------------------------
變量類型
#region 區(qū)塊名
#endregion
可以在編輯代碼時賦予折疊代碼的功能。
聲明格式:變量類型 變量名 = 初始值
拼接打?。篧riteLine('' + 變量)
變量類型:
1.有符號整數(shù):sbyte,short,int,long
2.無符號整數(shù):byte,uint,ushort,ulong
3.浮點數(shù):
- float,數(shù)字結尾記得加“f”,存儲8位有效數(shù)字,從左第一個不是0的數(shù)開始算起
- double:默認浮點數(shù)類型,儲存15~17位有效數(shù)字
- decimal:結尾加“m”,27~28位有效數(shù)字
- 備注:m,f大寫小寫都沒關系
4.特殊類型:bool,char,string
- char:字符,單引號
- string:字符串,雙引號
聲明變量:int x = 2;
改變變量: x = 3;
這兩者格式有區(qū)別
int x = 1, y = 2, z = 3;
int a2;變量初始化時建議就賦值,否則不安全
a2 = 1;
----------------------------------------------------------
變量儲存空間
sizeof方法獲取變量所占的內存空間(單位:字節(jié))
int sbyteSIze = sizeof(sbyte);
sizeof不能得到string類型的內存空間,因為string的長度時可變的
變量的本質是二進制,0和1;
1個byte等于8位
----------------------------------------------------------
變量命名規(guī)范
----------------------------------------------------------
常量
const int i2 = 1
- 常量必須被初始化
- 常量不能被修改
- 用來聲明一些常用不變的變量
----------------------------------------------------------
轉義符
----------------------------------------------------------
隱式轉換
不同變量類型之間的相互轉換
隱式轉換的基本規(guī)則:不同類型之間自動轉換
大范圍裝小范圍的類型,向下兼容,但不能向上兼容:
long l = 1;
int i = 1;
l = i;
decimal不能隱式儲存double、float
bool、char、string之間不存在隱式轉換
decimal、double,float可以裝在任何類型的整數(shù),因為可以用科學計數(shù)法來表示數(shù)字
- 大范圍存小范圍:
- decimal --> 整形(無符號,有符號)--> char
- double --> float --> 整形(無符號,有符號)--> char
- long --> int --> short --> sbyte
- ulong --> uint --> ushort --> byte
- 無符號無法隱式儲存有符號
- 有符號可以隱式儲存無符號,但無符號需要是非負的
----------------------------------------------------------
顯式轉換
將高精度的類型強制轉換為低精度
語法:變量類型 變量名 = (變量類型)變量;
注意:精度問題,范圍問題
有符號整形:(無符號整形同理)
sbyte sb = 1;
short s = 1;
sb = (int)s;
括號強轉 可能會出現(xiàn)范圍文通 造成的異常 (溢出)
浮點數(shù)之間
float f = 1.1f;
double d = 1.1234567890123456789f;
f = (float)d;
浮點數(shù)強轉要注意精度的問題
uint ui2 = 1;
int i2 = 1;
ui2 = (uint)i2;
浮點數(shù)轉整形時會把小數(shù)位上的數(shù)字全部丟棄,而不是四舍五入
char c = (char)1;//ASCII碼值表
bool、string不能通過括號的形式強轉
----------------------------
把字符串類型轉化為對應的類型
語法:變量類型.Parse("字符串")
注意:字符串必須能夠轉換成對應類型,否則報錯,
string str = “123”;
int i = int.Parse(str); // 123
要考慮值的范圍必須是變量能存儲的范圍。
(無符號的相同)
要考慮值的精度必須是變量允許的精度范圍
bool.Parse("true");
char.Parse("A");
----------------------------
更準確的將各個類型之間進行相互轉換
語法:Convert.To 目標類型(變量或常量)
注意:填寫的變量或常量必須正確,否則出錯
int a = Convert.ToInt32("12");
Convert.ToInt32(1.6f); // 返回2
會四舍五入

----------------------------
作用:拼接打印
語法:變量.toString();
string str = 1.ToString();
WriteLine()就默認調用括號內的所有變量的ToString方法
----------------------------------------------------------
異常
try{ 希望進行異常捕獲的代碼塊}
catch(Exception e){如果出錯了,會執(zhí)行catch中的代碼,e是具體的錯誤,通過e得到具體的錯誤信息}
finally{不管有沒有出錯,都會執(zhí)行其中的代碼} (可選部分)
try中代碼塊一旦出錯后面的代碼就不會繼續(xù)運行了
----------------------------------------------------------
算術運算符
把右側的值賦值給左側的變量
先算右側結果,再賦值給左側變量
09:25(待看)
----------------------------------------------------------
條件運算符
< > == != >= <=
比較結果是布爾變量: bool result = a > b;
條件運算符的優(yōu)先級低于算數(shù)運算符
result = a + 3 > a - 2 + 3;
錯誤形式:1 < a < 6
只要是數(shù)值,就能用條件運算符進行比較
特殊類型char string bool只能同類型進行 ==, !=的比較
----------------------------------------------------------
邏輯運算符
&& 對布爾值進行運算
bool result = true && false;
符號:||
符號:!
邏輯非的優(yōu)先級較高:! (3 > 2)
- 邏輯非優(yōu)先級最高,邏輯與高于邏輯或
- 優(yōu)先級:邏輯運算符 < 條件運算符 < 算術運算符 (邏輯非除外)
- 多個邏輯組合運用:沒有括號的情況下,從左到右依次計算:bool result = i > 3 && i < 3 && l == 2;
邏輯與或邏輯或的左邊滿足判定條件后,右邊就不進行計算了
int i3 = 1;
result = i3 > 0 || ++i3 >= 1;
i3的最后結果還是1,因為i3 > 0為true,已經滿足了邏輯或的判定要求,所以++i3就不計算了。
----------------------------------------------------------
位運算符
主要用數(shù)值類型進行計算的,將數(shù)值轉換為2進制,再進行位運算
(待完成)
----------------------------------------------------------
三目運算符
bool類型 ? bool類型為true時返回的內容 : bool類型為False時返回的內容;
string str = true ? "條件為真" : "條件為假" ;
第一個空位:結果是bool類型的任意表達式
第二個和第三個表達式:什么表達式都可以,但是它們結果的類型應該是一致的
----------------------------------------------------------
if語句
讓順序代碼產生分支,滿足某種條件時多執(zhí)行一些代碼
if(true){}
----------------------------------------------------------
switch語句
多條路徑選其一
switch(變量){
case 常量:
滿足條件執(zhí)行的代碼
break;
default:
上面case都不滿足,就執(zhí)行此
break
}
注意點:
- 常量,需要和變量類型一樣的值
- defualt可省略
const char c2 = ‘A’;
switch(c){
case c2:
...
}
滿足某些條件時,做的事情時一樣的,就可以使用貫穿
不寫break,會依次執(zhí)行某個條件后的所有代碼,直到遇到一個break跳出
----------------------------------------------------------
while語句
while(bool類型的值){
}
跳出循環(huán)邏輯的關鍵詞
break:跳出循環(huán)
如果一個if語句嵌套在while中,而break語句再if中,那么break跳出的還是while語句。因為break只針對循環(huán)語句
break在swich中的用法與在while中的相似
continue只和while有關系,和switch沒關系
----------------------------------------------------------
do while語句
while:先判斷條件,再執(zhí)行
do while循環(huán):先至少執(zhí)行依次一次循環(huán)語句塊中的邏輯,再判斷是否繼續(xù)
do { 循環(huán)語句塊}
while(bool類型的值); (注意這個分號)
continue在do while中會讓程序回到while而非do
----------------------------------------------------------
for循環(huán)
for(初始表達式; 條件表達式; 增量表達式)
{循環(huán)塊}
- 初始表達式:聲明一個臨時變量,用來計數(shù)
- 條件表達式: bool類型的結果
- 增量:初始表達式中的變量的自增減
for(int i = 0; i < 10; i++){}
for(int i = 0, j = 0; i < 10 && j < 0; i++, j = j+1){}
for循環(huán)的死循環(huán):
for(;;){}
----------------------------------------------------------
總結