.Net系列學習課程—01C#
一些常用的操作錯誤使用習慣,一段文字的刪除、複製貼上、自動完成。插入、覆蓋模式的困惑。技巧:訊息框文字的複製:Ctrl+Z函式名字大小寫切換要用Shift,別用cap;,()等的全形半形問題。VisualStudio多專案的建立,專案的重新開啟,只要有一個專案有問題預設就無法執行,專案的解除安裝,自動執行當前專案。如果程式碼執行有問題,看看執行的專案對不對。VisualStudio各個檢視的開啟、開發環境的重置。遇到異常、報錯不要慌。
儲存位置,以及如何開啟專案的資料夾。(專案上點選右鍵,選擇在資源管理器中開啟.)如何將專案資料夾中的其它檔案載入到專案中。專案資料夾中副檔名為csproj的檔案,包含當前專案中包含的檔案。如何顯示行號:工具|選項|文字編輯器|CS|顯示行號。Ctrl+G,快速定位到指定行號。
.Net開發環境(*瞭解)
第一個C#程式
- 建立第一個控制檯程式並且除錯執行。
- 為什麼要從控制檯程式開始?不要把精力放到表現層,而是把精力放到寫程式碼上。無論控制檯還是Winform還是ASP.Net最難的是寫程式碼,而不是拖控制元件。
- 唯一需要學的三條控制檯指令:Console.WriteLine:列印輸出、Console.ReadLine:從控制檯讀入一行、Console.ReadKey:控制檯暫停。至於Console.是什麼意思不用管。1+1=2的例子
- 佔位符是個什麼玩意兒?{0}的個數必須和引數的個數一樣,是一一對應的關係。序號從0開始在後面學習String.Format的時候還會用到這個類。
斷點的技巧:設定、取消、禁用全部斷點、暫停斷點、設定條件等。
解決方案管理器:解決方案、工程、檔案
拖動檢視、關閉/開啟檢視、重置視窗布局
C#原始檔一般以cs結尾。即使沒有VS也能用記事本開啟
C#程式的入口是Main函式,在Main中寫程式碼就行,暫時不用關心其他部分是什麼意思
錯誤列表。見到編譯錯誤不用慌。錯誤排除演示。常見錯誤:結尾沒有分號,大小寫錯誤。
顯示程式碼行號。工具→選項→文字編輯器→C#→顯示→行號
修改文字編輯器字型。
設定啟動專案,將當前專案自動設定為啟動專案,如果執行結果很奇怪,看看是不是沒有設定啟動專案。
一個解決方案包含多個專案,同時只能開啟一個解決方案;在解決方案上點選右鍵→屬性→啟動專案,“當前選定內容”是把當前編輯器所在的專案為啟動專案,但啟動專案就是右鍵設定啟動專案設定的,多啟動專案可以讓多個專案同時啟動,適合於開發客戶端、伺服器的程式
從上到下一條條的依次執行。過去的就讓他過去吧,不會返回頭執行:int i1=3;int i2=5;int i3=i1+i2;i1=9;。
大小寫敏感。String和string 都行是另外一個問題。
函式引數用()包圍。錯誤:string s2 = Console.ReadLine; Console.WriteLine=3,區分方法和屬性,看圖示顏色。
兩句程式碼之間用分號(;)分割(易錯:全形問題)
註釋:單行註釋、多行註釋。批量註釋、反註釋。用VisualStudio的批量反註釋:快捷鍵、工具欄圖示兩種方式。
變數
把變數看成放資料的容器。
定義變數的方式:型別 變數名; int i3;變數只是容器,必須放進去值才有意義,否則就是一個“杯具”。
string s1=null和string s1不一樣。
變數的型別:不同型別的容器放不同的東西。不能在int型別的變數中放字串。
變數不能放和變數型別不相容的資料。
變數的名字不能重名(不嚴格)
//int i3 = 33;//定義一個變數i3,賦值為33
i3 = 33;//為已有變數i3賦值為33
變數只能宣告一次,但是可以多次使用。
int i1=5;int i1=6;不可以。但是int i1=5;i1=6;是 可以的。
問題
int i=10;Console.WriteLine("i"); Console.WriteLine(i);
常用基本資料型別
string、int 、char 、bool long等。bool的取值:true、false。int的表示範圍。long有多long
為什麼輸出"要用轉義符"\"",因為編譯器預設是遇到"開始字串,再遇到"是結束字串,但是如果遇到前面有\的"就不把它當成有字串起始意義的"。\表示不要把\後的"當成字串的開始或者結尾
為什麼要有轉義符,就是要在程式中輸出回車等特殊的字元,不能直接在字串中打回車,所以必須轉移。"\n"回車。string:"\"ab\""、"ab\nb"、"c:\\a.txt"、@"c:\a.txt"(推薦)。@表示字串中的\不當成轉義符。@還可以定義多行文字。"\\\\"一命償一命
"\""中\是告訴編譯器不要把這個"當成字串的結束。
@是不把\當成轉義符。@不是萬能的,不能解決字串中有雙引號的問題,如果有雙引號還是用轉義符
‘a’是char,“a”是string。
string s = Console.ReadLine();
難點:問題:
String str=Console.ReadLine();
Console.WriteLine(str);
使用者輸入a\nb,輸出什麼?轉義符只針對在程式碼中直接寫出的字串,對於程式中讀取出來沒有這個問題。\n是給編譯器看的。把“河蟹”翻譯成“和諧”
簡單的型別轉換:Convert.ToString()、ToString()、Convert.ToInt32() 。即可用中間變數,也可以不用。int i = Convert.ToInt32(Console.ReadLine());
變數的命名
命名規則:第一個字元必須是字母或者下劃線(_),其後的字元可以是任意個數字、字母、下劃線。不能全部使用C#的關鍵字,比如class、namespace、new、void等。判斷方式:VS中亮藍色的就是關鍵字。
這也是類、函式等的命名規則。還可以使用中文變數名(類名、函式名),不推薦。
潛規則:C#中建議變數的開頭用小寫。專業的程式設計師一定要注意大小寫的問題!和“命名規則”不一樣不是強制性的規定
變數在宣告後才能使用
變數的宣告:int i;int x,y;int i=3;變數使用之前必須賦值。
運算子、表示式
+、-、*(乘)、/(除)、%(求餘)
+可以用作字串連線,其他不可以。
++(自增)、--(自減)
(*)運算子優先順序:i1+i2*i3、(i1+i2)*i3。不要變態,括號是王道。
變數可以和字面量混合運算。
練習:讓使用者輸入兩個數,列印出兩個數的和。
賦值
賦值運算子=,讓左邊變數的值等於右邊的計算結果。這就能解釋令人不解的i=i+1;
(*)+=、-=、*=、/=。
i2=i1++;i2=++i1;(瞭解)。--同理。
習題:int a=10;a++;a=a+a;Console.WriteLine("{0}",a);執行結果是什麼?
int i=10;int j=i;i=5;j=?
int x=10;x+y=80;Console.WriteLine(y); x + y = 80; //左邊的必須是變數!!!不能是常量,不能是表示式
習題(重點,難點):交換兩個變數的值。易錯!!!
布林運算
相等判斷:==,不要和=混淆。WriteLine("{0}",i==1);WriteLine("{0}",i=1);的區別。Console.WriteLine("{0}",i=1);//C#中賦值表示式也有值,它的值表示為賦值後變數的值
不等判斷:!=
大小比較:<、>、<=、>=
取反:!
組合運算:&&(並且)、||(或者)。
&& 並且:只有兩邊都為true的時候,表示式的值才為true,否則是false;
||或者:兩邊只要有一個為true的時候,表示式的值就是true,否則是false;
&&、||是短路運算,試驗。
if
單句的時候大括號可以省略,但是不建議省略,演示說明why。if()else if()和if()if()是不一樣的。
if(i>1)
{
}
if(i>1)
{
}
else
{
}if(i>100||i<10)
{
}if(i>100&&j>10)
{
}
if(i>100)
{
}
else if(i<10)
{
}
else
{
}
if語句的巢狀
if((i>0&&j>0)||(i<0&&j<0))
{
}
易錯程式碼:
if(i>10);
{
Console.WriteLine("是");
}
課上練習
學程式設計不是看書,不是聽老師講,而是自己動手寫。
作業1:提示使用者輸入密碼,如果密碼是“888888”則提示正確,否則提示錯誤。
作業2:提示使用者輸入密碼,如果密碼是“888888”則提示正確,否則要求再輸入一次,如果密碼是“888888”則提示正確,否則提示錯誤。
作業3:提示使用者輸入使用者名稱,然後再提示輸入密碼,如果使用者名稱是“admin”並且密碼是“888888”,則提示正確,否則提示錯誤,如果使用者名稱不是admin還提示使用者使用者名稱不存在。
注意:變數命名要用有意義的變數名,不要x、y、z。
switch case
被判定的值進入滿足條件的分支執行
switch(i)
case 1:
//
break;
case 2:
//
break;
switch(i)
case 1:
//
break;
case 2:
//
break;
default:
break;
switch(i)
case 1:
case 2:
//
break;
case中的值必須是常量,不能是變數、表示式。
switch(i)
case a:
//
break;
類似於if...else...else if...else,但是是離散值的判斷。
switch一般都可以用if重寫,但是if不一定能用switch重寫
不要忘了break。C#中的break不寫是不行的,除了合併case的情況
while迴圈
while(i<100)
{
//列印i
i++;
}
只要while後小括號中的表示式為true,就不斷執行大括號中的程式碼
while(不是終點)
{
跑
}
do
{
//列印i
i++;
}
while(i<100)
先做……如果滿足則再來一次,直至while表示式為false。至少被執行一次。(*)
易錯while(i<0);
{...}
練習1:用while計算1到100之間整數的和;(有更好的數學解法)
練習2:要求使用者輸入使用者名稱和密碼,只要不是admin、888888就一直提示要求重新輸入。
練習3:不斷要求使用者輸入一個數字,然後列印這個數字的二倍,當使用者輸入q的時候程式退出(return)。
練習4:不斷要求使用者輸入一個數字(假定使用者輸入的都是正整數),當使用者輸入end的時候顯示剛才輸入的數字中的最大值。設一個變數int max,初始值為0,使用者每輸入一次就把使用者輸入的和max比較一下,如果輸入的比max大,則讓max等於使用者輸入。陷阱:判斷end是在之前還是之後。
迴圈的中斷
break:立即終止整個迴圈。
continue:立即終止當前迴圈步驟,進行下一次迴圈步驟。
練習1:用 while continue實現計算1到100之間的除了能被7整除之外所有整數的和。
練習2:用while break實現要求使用者輸入使用者名稱和密碼,只要不是admin、888888就一直提示要求重新輸入。
return:準確的說,return不是迴圈中斷語句,它代表跳出當前方法。
for迴圈
for(code1;code2;code3)。code1:迴圈的初始化程式碼,只在迴圈開始之前執行一次;code2,bool型別的表示式,每次迴圈完成前都判斷一下是否為true,只有為true才會進行本次迴圈;code3在每次迴圈之後執行一次。
for的三段都可以省略,但是不能丟了“;”。
break、continue同樣可以應用於for。
for和while程式碼之間都可以互相轉換,究竟用哪種方式則取決於一些慣用用法和個人習慣,不用記,程式碼寫多了自然就有感覺
for(int i=0;i<10;i++)
{
}for(int i=100;i>0;i--)
{
}
for中終止條件注意是<還是<=。只要想好了想要的最後一個數是什麼、第一個數是什麼即可
用 for實現計算1到100之間所有整數的和。用 for實現計算200到300之間所有整數的和。
列舉
確定數量、確定值的幾個取值:東西南北、男女、上中下。
enum Gender{male,female}
enum QQStatus{online,offline,hidden}列舉的用法,QQStatus status = QQStatus.online;
和用字串比起來,用列舉的好處就是限定了變數的取值範圍,程式處理起來更方便。
與class同級,也可放到單獨的類檔案中。
陣列
儲存多個值。幾乎任意型別都可以宣告陣列。
int[] nums = {5,3,8}
int[] nums = new int[3]
int[] nums = new int[3]{5,3,8}//個數和宣告數必須一致
int[] nums = new int[5]{5,3,8}//錯誤
使用索引器訪問指定編號位置的元素,訪問陣列元素:nums[0]、nums[1]。索引從0開始。取到的元素的型別就是陣列元素的型別。還可以對陣列元素進行賦值
練習1:從一個整數陣列中取出最大的整數
練習2:計算一個整數陣列的所有元素的和。
練習6:將一個字串陣列的元素的順序進行反轉。{"3","a","8","haha"} {"haha","8","a","3"}。第i個和第length-i-1個進行交換。
聯絡7:連線兩個int陣列為新陣列。
練習3:將一個字串陣列{"3","a","8","haha"}輸出為|分割的字串,"3|a|8|haha"
練習4:將一個整數陣列的每一個元素進行如下的處理:如果元素是正數則將這個位置的元素的值加1,如果元素是負數則將這個位置的元素的值減1。
練習5:有一個整數陣列,請宣告一個字串陣列,將整數陣列中的每一個元素的值轉換為字串儲存到字串陣列中。string[] strs = new string[values.Length];
相關文章
- lua課程學習筆記筆記
- 如何高效學習java課程Java
- 【課程學習】課程2:十行程式碼高效完成深度學習POC行程深度學習
- 想要學習web前端需要學習那些課程Web前端
- 達內課程學習筆記筆記
- 機器學習課程筆記機器學習筆記
- Python開發系列課程彙總 - 課程大綱Python
- 課程實習
- 學web前端有哪些課程和學習思路?Web前端
- 北大人工智慧課程學習截圖:學習率人工智慧
- 機器學習、深度學習、強化學習課程超級大列表!機器學習深度學習強化學習
- Excel教程:學習資源(網站/課程)Excel網站
- .NET平臺系列30:.NET Core/.NET 學習資源彙總
- UFLDL:史丹佛大學深度學習課程總結深度學習
- Linux課程可以零基礎學習嗎?該如何學習?Linux
- 國內有哪些大學開了深度學習課程?深度學習
- 快速高效學習 Kotlin | Kotlin Bootcamp 課程介紹Kotlinboot
- 學習Linux開發課程需要培訓嗎Linux
- 資料庫學習 哈工大課程 第Ⅸ、Ⅹ講資料庫
- 區塊鏈專項課程學習筆記區塊鏈筆記
- 超星學習通(學銀線上)影片課件課程下載工具,如何在電腦端下載超星學習通(學銀線上)影片課程課件資料PDF,PPT到本地?
- 林軒田機器學習基石課程學習筆記14 — Regularization機器學習筆記
- 林軒田機器學習基石課程學習筆記15 — Validation機器學習筆記
- Linux課程零基礎可以學習嗎?學習哪些內容?Linux
- 【學習心得】老男孩Linux課程學習分享,聽聽我的故事!Linux
- 學習Python課程怎麼樣?哪些人更適合學習?Python
- 教學課程安排
- 神經網路與深度學習 課程複習總結神經網路深度學習
- 機器學習導圖系列(3):過程機器學習
- (課程學習)Android必學-非同步載入 —— 監聽 ListViewAndroid非同步View
- .net工程師學習vue的心路歷程(二)工程師Vue
- .net工程師學習vue的心路歷程(三)工程師Vue
- .net工程師學習vue的心路歷程(一)工程師Vue
- 林軒田機器學習基石課程學習筆記12 — Nonlinear Transformation機器學習筆記ORM
- 林軒田機器學習基石課程學習筆記4 — Feasibility of Learning機器學習筆記
- 林軒田機器學習基石課程學習筆記9 — Linear Regression機器學習筆記
- 軒田機器學習基石課程學習筆記11 — Linear Models for Classification機器學習筆記
- 林軒田機器學習基石課程學習筆記13 — Hazard of Overfitting機器學習筆記
- 林軒田機器學習基石課程學習筆記6 — Theory of Generalization機器學習筆記