1 及時釋放資源
CLR託管環境扮演了垃圾回收的角色,所以你不需要明確釋放已建立物件所佔用的記憶體。但這不代表你可以忽略所有的使用過的物件。許多物件封裝了其 他類型的系統資源(例如,磁碟文件,資料連接,網路連接埠)。維持這些資源的使用狀態會急劇的耗盡系統的資源,削弱效能並且最終導致程式出錯。當你開啟一個 檔案、網路連接埠或資料連線時,當你不再使用這些資源時,就應該盡快明確釋放這些資源。
另外針對資源的操作,一般需要增加異常捕獲處理(Try..Catch),這時別忘記在finally中進行資源釋放,以確保在捕獲異常時也可以正常釋放資源。
2 正確停止多執行緒
FileStream fs = File.Open(…);
Try{…} Finally{ fs.Close;}
假設如上程式碼在工作執行緒中,已經進行到finally裡面,這個時候UI執行緒呼叫了該執行緒的Abort()方法,則很有可能fs.Close還沒執行的時候,工作執行緒跳出finally程式碼區塊了。這樣你的fs就永遠不會被Close了。
大多數情況下,finally會永遠被執行,但不包括呼叫Thread.Abort所引發的ThreadAbortException異常,鑑於此理由,不建議使用Abort。
要正確停止線程,不在於呼叫者採用了什麼行為(不要直接使用Thread.Abort()),而更多依賴於工作線程是否能主動回應呼叫者的停止請求。
大體機制是,如果執行緒需要被停止,那麼執行緒本身就應該負責開放給呼叫者Cancel的介面。
3 類型轉換相關
如果從資料庫讀取某個值,有資料時是int型,沒有資料的話取得到的是null,型別強轉則會異常。所以一般很少用強轉,用的話也必須做一個異常捕獲,避免程序異常。
在強轉不好的情況下,我們建議使用TryParse方法,該方法已經對Parse方法進行了異常處理。
也可以用Convert,同樣需要進行異常捕獲;其實,凡是涉及到類型轉換,序列化等操作的地方,都需要捕獲異常;
4 字符串操作問題
在對字符串操作中,若涉及大量拼接操作建議使用StringBuilder。若使用String會帶來明顯的效能損耗。原因在於string對像是 個很特殊的對象,它一旦被賦值就無法改變。在執行時間呼叫String類別中任何拼接操作(如賦值、”+”等),都會在記憶體中建立一個新的字串對象,也意義 著要為該新物件分配新的記憶體空間。
5 const常數修改所導致的問題
當程式引用其他dll中的const常數時要特別注意。
若修改了此dll中的const常數後,要重新編譯引用了此dll中這個const常數的所有程序,否則程式中使用的這個常數值將會和dl中的不一致。
另外如果使用readonly代替const可以解決這個問題,不需要重新編譯,因為const是編譯型常數,而readonly是運行時常數。
6 C#編譯目標平台問題
當程式依賴的dll的編譯的目標平台是X86,則程式本身的編譯目標平台也必須是X86(而不是預設選項Any CPU),否則64位元電腦將無法運行。
7 跨執行緒存取控制項
在開發介面程式時,會遇到比較耗時的操作,為了程式的友善性,我們一般會在任務執行緒中執行耗時操作,並將執行資訊顯示在主UI線程。
假如直接在任務線程中操作主UI線程中的控件,這樣極易出現異常,則報“不能在其他線程中修改創建控件線程的值”,如果設置了禁止編譯器對跨線程訪問做檢查,就不會報錯,但是會出現無法預測的問題。此時建議採用委託或匿名委託的方式實現。
以上是C#/.NET易錯的幾點的詳細內容。更多資訊請關注PHP中文網其他相關文章!

C#在企業級應用、遊戲開發、移動應用和Web開發中均有廣泛應用。 1)在企業級應用中,C#常用於ASP.NETCore開發WebAPI。 2)在遊戲開發中,C#與Unity引擎結合,實現角色控制等功能。 3)C#支持多態性和異步編程,提高代碼靈活性和應用性能。

C#和.NET適用於Web、桌面和移動開發。 1)在Web開發中,ASP.NETCore支持跨平台開發。 2)桌面開發使用WPF和WinForms,適用於不同需求。 3)移動開發通過Xamarin實現跨平台應用。

C#.NET生態系統提供了豐富的框架和庫,幫助開發者高效構建應用。 1.ASP.NETCore用於構建高性能Web應用,2.EntityFrameworkCore用於數據庫操作。通過理解這些工具的使用和最佳實踐,開發者可以提高應用的質量和性能。

如何將C#.NET應用部署到Azure或AWS?答案是使用AzureAppService和AWSElasticBeanstalk。 1.在Azure上,使用AzureAppService和AzurePipelines自動化部署。 2.在AWS上,使用AmazonElasticBeanstalk和AWSLambda實現部署和無服務器計算。

C#和.NET的結合為開發者提供了強大的編程環境。 1)C#支持多態性和異步編程,2).NET提供跨平台能力和並發處理機制,這使得它們在桌面、Web和移動應用開發中廣泛應用。

.NETFramework是一個軟件框架,C#是一種編程語言。 1..NETFramework提供庫和服務,支持桌面、Web和移動應用開發。 2.C#設計用於.NETFramework,支持現代編程功能。 3..NETFramework通過CLR管理代碼執行,C#代碼編譯成IL後由CLR運行。 4.使用.NETFramework可快速開發應用,C#提供如LINQ的高級功能。 5.常見錯誤包括類型轉換和異步編程死鎖,調試需用VisualStudio工具。

C#是一種由微軟開發的現代、面向對象的編程語言,.NET是微軟提供的開發框架。 C#結合了C 的性能和Java的簡潔性,適用於構建各種應用程序。 .NET框架支持多種語言,提供垃圾回收機制,簡化內存管理。

C#和.NET運行時緊密合作,賦予開發者高效、強大且跨平台的開發能力。 1)C#是一種類型安全且面向對象的編程語言,旨在與.NET框架無縫集成。 2).NET運行時管理C#代碼的執行,提供垃圾回收、類型安全等服務,確保高效和跨平台運行。


熱AI工具

Undresser.AI Undress
人工智慧驅動的應用程序,用於創建逼真的裸體照片

AI Clothes Remover
用於從照片中去除衣服的線上人工智慧工具。

Undress AI Tool
免費脫衣圖片

Clothoff.io
AI脫衣器

Video Face Swap
使用我們完全免費的人工智慧換臉工具,輕鬆在任何影片中換臉!

熱門文章

熱工具

VSCode Windows 64位元 下載
微軟推出的免費、功能強大的一款IDE編輯器

MinGW - Minimalist GNU for Windows
這個專案正在遷移到osdn.net/projects/mingw的過程中,你可以繼續在那裡關注我們。 MinGW:GNU編譯器集合(GCC)的本機Windows移植版本,可自由分發的導入函式庫和用於建置本機Windows應用程式的頭檔;包括對MSVC執行時間的擴展,以支援C99功能。 MinGW的所有軟體都可以在64位元Windows平台上運作。

EditPlus 中文破解版
體積小,語法高亮,不支援程式碼提示功能

SAP NetWeaver Server Adapter for Eclipse
將Eclipse與SAP NetWeaver應用伺服器整合。

Dreamweaver Mac版
視覺化網頁開發工具