1.C#、.Net和ASP.Net
- .Net是一個平台,提供了運行.Net程序需要的虛擬機、類庫等
- C#是.Net平台下的一個語言,.Net下的語言還有VB.Net、PowerShell等
- ASP.Net是.Net下開發網站的技術
讀音:dot net、點兒奈特
C#:C Sharp,C沙坡
常用的開發工具是Visual Studio,簡稱VS;如果不用VS開發,其實安裝.Net Framework即可運行.Net開發的程序,裝VS的時候把.Net Framework同時裝上了。運行程序也不需要裝VS,有.Net Framework即可。
2.關於項目(Project)
什么時候新建一個項目:相關功能放到一個項目中,QQ:文件傳輸、聊天、視頻聊天、QQ群。
解決方案:相關的項目放在一個解決方案中,避免一個解決方案中項目太多,也不便於管理。
創建解決方案(Solution):一個解決方案下建多個項目(Project),多個相關的項目放到同一個解決方案中;還有一種快速建立解決方案和第一個項目的方法;
打開其他解決方案的方法:.sln。
打開其他項目的方法:.csproj
sln、csproj只是文件的結構,還要cs等文件;
3.項目的生成(Build)
項目“生成”就是把項目中的代碼編譯(Compile)成二進制可執行程序(exe、dll等),dll無法獨立運行;
修改代碼后,如果不“生成”,那么exe中還是舊的運行效果;
修改代碼后直接運行exe還是之前的代碼,“開始執行”或者“開始調試”后會自動保存並且“生成”;
3.1“生成解決方案”和“重新生成解決方案”有什么區別?
- 生成解決方案:已經是最新的就跳過。
- 重新生成解決方案:先把已經生成好的全部刪掉,然后再生成一遍。
3.2 Debug和Release有什么區別?
- Debug 通常稱為調試版本,它包含調試信息,並且不作任何優化,便於程序員調試程序。
- Release 稱為發布版本,它往往是進行了各種優化,使得程序在代碼大小和運行速度上都是最優的,以便用戶很好地使用。
4.控制台編程
- Console.WriteLine(“Hello”)是在屏幕的當前位置輸出一個字符串,並且在結尾換行;Console.WriteLine()是只執行換行;Console.Write(“RuPeng”)是在屏幕的當前位置輸出一個字符串,不換行。這幾個Write支持各種數據類型。
- Console.Beep():是讓計算機發出蜂鳴聲(有些計算機可能不支持); Console.Beep(1000,1000);是指定頻率和持續時長(毫秒); (*)趣味: Beep音樂.txt
- Console.Clear()清除屏幕上的內容;
- Console.ReadKey()等待用戶輸入一個按鍵再繼續向下執行,(*)可以通過返回值獲取哪個按鍵被按下。不要錯用成了Console.Read()。因為Main執行結束后程序就退出了,為了避免控制台程序一閃而過,一般最后加上一行Console.ReadKey()。不要亂加Console.ReadKey()
- string s = Console.ReadLine();等待用戶輸入一行字符串,直到回車;通過返回值獲取用戶輸入的內容。
- Console.Write**();Console.Read**()默認都是把光標顯示到當前位置(自動流動)
- Console.SetCursorPosition(5, 5)設定光標位置,后面的輸入、輸出都會從這個位置開始“流動”;默認寬和高分別是80*25個字符。縱向可以滾屏,但是不能滾太多。
- Console.BackgroundColor = ConsoleColor.Red;設置背景顏色。 Console.ForegroundColor = ConsoleColor.Yellow;設置前景顏色; 設置之后的受影響,之前的不受影響。注意這里是給“屬性”賦值,和方法調用不一樣,還涉及到“枚舉”。“屬性”、“枚舉”以后會講,先暫時記住用法。
- Console.ResetColor():恢復前景、背景顏色的默認值;
- Console.Title = “hello”;設置控制台標題;顏色不能改。
- 除了這里講的,其他的Console方法不用研究,也不用琢磨“***效果如何實現”,控制台編程不是重點。
5.反編譯

反編譯工具: ILSpy、 Reflector (收費,可能會搞崩VS)
把編譯程序“反編譯”為cs代碼。從原理上無法原樣還原,比如:
- 注釋沒有;
- 編譯器優化:int i=5+6;(被優化掉了)加上一個WriteLine(常量合並),修改后ILSpy中Reload
- 反編譯工具的bug、不足
.Net反編譯工具不能反編譯用C等開發的程序。
如何避免反編譯:混淆器。沒有太大研究價值。因為現在主要都是在做asp.net web開發;
