C# 周記 :從集合字典到 IO 多線程的踩坑實錄
這一周的學習進度可以說是“起飛”兼“翻車”并存。從抽象類一路狂飆到的 IO 與文件操作順帶還和多線程Multithreading剛了正面。代碼邏輯越來越復雜遇到的 Bug 也越來越底層。今天總結一下這周的核心知識點以及那些讓我 debug 到血壓飆升的“經(jīng)典神坑”。一、抽象類 多態(tài)、集合 泛型和字典前三天的內(nèi)容主要是數(shù)據(jù)結構和面向?qū)ο蟮纳A抽象類 多態(tài)脫離了簡單的搬磚代碼開始理解怎么設計更靈活的程序架構。集合 泛型徹底告別了必須固定長度的傳統(tǒng)數(shù)組。用上了可以自動擴容的ListT配合泛型的類型安全檢查處理數(shù)據(jù)舒服多了。字典 (Dictionary)掌握了鍵值對Key-Value的魔法查找數(shù)據(jù)的速度直接拉滿。異常處理Exception也讓我學會了怎么讓程序在崩潰邊緣安全停下。二、IO 文件操作到了周四程序終于要和操作系統(tǒng)硬盤里的真實文件打交道了真正的“踩坑之旅”也就此開始???1轉(zhuǎn)義字符的“隱形背刺”在做從文本文件中讀取并提取整數(shù)的練習時我用Split()方法切割字符串。為了去掉換行符我定義了分隔符數(shù)組char[] separators { , ,, r, \n };翻車原因漏掉了一個反斜杠把\r回車符寫成了普通的字母r。導致電腦切出來的數(shù)字字符串背后偷偷跟著一個看不見的控制符變成10\r。結果int.TryParse死活轉(zhuǎn)換失敗整個數(shù)組全軍覆沒???2程序員的終極靈異事件寫了一段讀取文件內(nèi)容并打印的代碼語法天衣無縫流操作標準規(guī)范但運行起來黑框里就是什么都沒有。我查了半天 API最后發(fā)現(xiàn)測試用的文本文件忘了按CtrlS保存里面根本就是空的代碼邏輯再完美也防不住空空如也的測試數(shù)據(jù)。之前習慣了File.ReadAllText()一口吞到了FileStream終于理解了底層的玩法。 不能直接用水管把大海硬盤大文件瞬間灌進房子內(nèi)存。必須要自己建一個“水桶”byte[] buffer new byte[1024];。每次只讀 1KB提水倒水循環(huán)往復這樣哪怕是幾十 G 的文件程序也只需要占用極小的內(nèi)存。三、多線程并發(fā)讀寫這周最大的挑戰(zhàn)就是用多線程去干預文件和數(shù)組???3程序結構散架剛接觸Thread時為了圖方便把題目寫在一起結果直接喜提CS0116報錯紅線。翻車原因C# 有極其嚴格的結構規(guī)范。一是方法不能“裸奔”必須包在class大括號里二是一個項目里只能有一個大門static void Main。把計算斐波那契的方法隨便丟在外面編譯器當場罷工。另外給線程傳參數(shù)時必須掌握() Lambda 表達式這種神仙語法???4多線程并發(fā)寫入的“車禍現(xiàn)場”題目要求“多個線程同時讀取并寫入到另一個文件”。我直接Start()兩個線程往里寫。結果程序無情拋出IOException文件正由另一進程使用。 這就好比兩個工人同時拿筆往同一張紙上寫字直接打架。終極解法加鎖 (lock)在寫入操作外面套上lock (_fileLock)。給文件裝上一扇門線程 A 進去寫的時候門鎖死線程 B 在外面乖乖排隊等 A 出來了B 再進去寫。配合FileMode.Append完美實現(xiàn)了高并發(fā)下的安全追加寫入總結這一周從內(nèi)存里的數(shù)據(jù)結構打通到了硬盤 IO 和 CPU 的多線程調(diào)度。雖然經(jīng)常因為一個符號或者沒保存文件卡住但看到多線程交替運行、文件完美生成的那一刻還是挺爽的。

相關新聞

AI質(zhì)量檢查流程卡點診斷手冊(含17個真實產(chǎn)線故障快查表)

AI質(zhì)量檢查流程卡點診斷手冊(含17個真實產(chǎn)線故障快查表)

更多請點擊: https://codechina.net 第一章:AI質(zhì)量檢查流程的演進與核心價值 AI質(zhì)量檢查已從早期依賴人工抽檢與規(guī)則引擎的靜態(tài)校驗,逐步演進為融合多模態(tài)感知、實時反饋閉環(huán)與自適應學習的智能治理體系。這一轉(zhuǎn)變不僅提升了缺陷檢出率與響應…

2026/8/3 9:38:40 閱讀更多
5個簡單技巧:用Seraphine英雄聯(lián)盟助手提升你的排位勝率

5個簡單技巧:用Seraphine英雄聯(lián)盟助手提升你的排位勝率

5個簡單技巧:用Seraphine英雄聯(lián)盟助手提升你的排位勝率 【免費下載鏈接】Seraphine 英雄聯(lián)盟戰(zhàn)績查詢工具 項目地址: https://gitcode.com/gh_mirrors/se/Seraphine 還在為英雄聯(lián)盟排位賽中的BP決策煩惱嗎?Seraphine是一款基于官方LCU API開發(fā)的英…

2026/8/3 10:48:45 閱讀更多
公章丟了怎么登報掛失?需要多少錢?2026登報渠道對比

公章丟了怎么登報掛失?需要多少錢?2026登報渠道對比

截至2026年8月,公章丟失后可通過線上小程序或報社柜臺登報。辦理重點是選對報紙,寫對企業(yè)名稱、公章類型和編號??墒褂梦⑿呕蛑Ц秾毨锩娴幕坜k好登報小程序,按城市查詢?nèi)珖l(fā)行、省級、地市級報紙,并確認價格、見報日期和原報寄送…

2026/8/3 10:48:45 閱讀更多
VR技術在跨步電壓安全培訓中的應用與實踐

VR技術在跨步電壓安全培訓中的應用與實踐

1. 項目背景與核心價值 去年夏天在檢修變電站時,我親眼目睹一名新手電工因為誤判跨步電壓范圍差點釀成事故。這種觸電風險在電力行業(yè)其實非常普遍——根據(jù)行業(yè)安全報告,近三年由跨步電壓引發(fā)的觸電事故占比高達17%,而傳統(tǒng)安全教育方式存在兩大…

2026/8/3 10:38:44 閱讀更多
3分鐘搞定!QQ空間歷史說說完整備份終極指南

3分鐘搞定!QQ空間歷史說說完整備份終極指南

3分鐘搞定!QQ空間歷史說說完整備份終極指南 【免費下載鏈接】GetQzonehistory 獲取QQ空間發(fā)布的歷史說說 項目地址: https://gitcode.com/GitHub_Trending/ge/GetQzonehistory 你是否曾想過,那些年發(fā)過的QQ空間說說,那些記錄青春的文字…

2026/8/2 0:04:01 閱讀更多
AMAT 0100-02186 I/O 分配 PCB

AMAT 0100-02186 I/O 分配 PCB

AMAT 0100-02186 I/O分配PCB板是應用材料(Applied Materials)公司生產(chǎn)的一款用于半導體設備的I/O信號分配電路板。該型號(0100-02186)的核心特點如下:專用于Endura等半導體工藝腔室。集成信號路由與分配功能。連接控制…

2026/8/2 2:51:21 閱讀更多
Nissei Corp FFMN-32L-10-T0 40AX 三相異步電動機

Nissei Corp FFMN-32L-10-T0 40AX 三相異步電動機

Nissei Corp FFMN-32L-10-T0 40AX 三相異步電動機是日本日清(Nissei)品牌的一款工業(yè)用三相異步電機,適用于自動化設備及通用機械驅(qū)動。該型號(FFMN-32L-10-T0 40AX)的核心特點如下:三相交流異步電動機。額定…

2026/8/2 2:52:49 閱讀更多