日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程语言 > C# >内容正文

C#

C#考核知识点总结

發布時間:2025/4/16 C# 25 豆豆
生活随笔 收集整理的這篇文章主要介紹了 C#考核知识点总结 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

根據string查找對應的枚舉狀態

我使用了循環遍歷獲得枚舉狀態的集合,然后foreach進行比較,忘記了直接將字符串解析為枚舉值。

//TODO 為什么不用C#的Api //考核改正 try {return (PlayerStatus)Enum.Parse(typeof(PlayerStatus), str); } catch (Exception) {return PlayerStatus.None; }//我的寫法 foreach (PlayerStatus item in Enum.GetValues(typeof(PlayerStatus))) {if (Enum.GetName(item.GetType(), item) ==str) return item; } return PlayerStatus.None;

?

根據int查找對應的枚舉狀態

這里和上一問題想法一樣,對枚舉不熟悉,造成我走了原路,需要對枚舉的知識多加學習和練習。

//TODO 為什么要循環?不直接強轉? return (PlayerStatus) val;//遍歷玩家狀態枚舉類型的所有狀態 foreach (PlayerStatus item in Enum.GetValues(typeof(PlayerStatus))) {if ((int)item == val) return item; } return PlayerStatus.None;

?

使用隨機數

我在使用隨機數時,寫在了循環里面,這樣會造成多余的內存開銷,是不可取的。主要原因是沒有注意內存優化的意識和習慣。

for (int i = 0; i < array.Length; i++) {//TODO 為什么要在循環里面創建隨機數 造成多余的內存開銷?-1Random random = new Random(Guid.NewGuid().GetHashCode());randomNum = random.Next(0, array.Length-1);string temp = array[i];array[i] = array[randomNum];array[randomNum] = temp; }

?

計算日期公式

我對日期的計算公式不太熟悉,百度到的公式直接使用了。需要對日期相關的操作和api多加學習和練習。

static void CalTimeToWeek(){int year = 1985, month = 12, day = 8;int week = (day + 2 * month + 3 * (month + 1) / 5 + year + year / 4 - year / 100 + year / 400) % 7;string weekStr = "";switch (week){case 0:weekStr = "星期一";break;case 1:weekStr = "星期二";break;case 2:weekStr = "星期三";break;case 3:weekStr = "星期四";break;case 4:weekStr = "星期五";break;case 5:weekStr = "星期六";break;case 6:weekStr = "星期天";break;}Console.WriteLine(weekStr); }

正確寫法

static string CaculateWeekDay(int y, int m, int d){//基姆拉爾森計算公式W=(d+2*m+3*(m+1)/5+y+y/4 -y/100+y/400)%7//把1月和2月看做上一年的13,14月if (m == 1)m = 13;if (m == 2)m = 14;int week = (d + 2 * m + 3 * (m + 1) / 5 + y + y / 4 - y / 100 + y / 400) % 7;string weekStr = "";switch (week){case 1:weekStr = "星期一"; break;case 2:weekStr = "星期二"; break;case 3:weekStr = "星期三"; break;case 4:weekStr = "星期四"; break;case 5:weekStr = "星期五"; break;case 6:weekStr = "星期六"; break;case 7:weekStr = "星期日"; break;default:break;}Console.WriteLine(weekStr);return weekStr; }

?

日期格式的輸出

同樣是對日期相關的操作不熟悉,使用了比較笨的方法自己拼接字符串

Console.WriteLine($"{year}年{month}月{day}日 {hour}:{minute}:{second}");//TODO 可以用字符串格式來解決 不需要取那么多數據自己拼接 Console.WriteLine(string.Format("{0:F}", datetime));

?

遍歷列表刪除指定數據

我當時只考慮到了遍歷時刪除不可取,可以使用臨時數據來解決這一問題,但是會造成額外的內存開銷。

更好的寫法是在遍歷到對應數據刪除后直接break,就避免了所有問題。

int target = -1; for(int i = 0; i < list.Count; i++) {if (list[i].PlayerId == id) target = i; } if (target != -1)list.Remove(list[target]); elseConsole.WriteLine("沒有此ID!");//TODO 使用倒敘進行列表刪除并且刪除后不在進行循環 不用開新的內存來存儲臨時數據 -1 /* for (int i = list.Count - 1; i >= 0; i--) {if (list[i].PlayerId == id){list.Remove(list[i]);break;} }*/

?

通過string刪除指定字典鍵值對

我忘了直接找id然后刪除,而是繞了個圈子,將字典轉為集合,找到該數據然后刪除(此處也犯了上一問題的錯誤),再轉為字典。

//TODO 1.為什么不直接找Id 然后字典直接RemoveKey? //TODO 2.找到數據后為什么還要繼續循環? 不 Break? int target = -1; for (int i = 0; i < list.Count; i++) {if (dictToList[i].PlayerName == name){target = i;} } if (target != -1)dictToList.Remove(dictToList[target]); elseConsole.WriteLine("不存在該姓名!"); Dictionary<int, PlayerData> newDict = ListToDict(dictToList); return newDict;

?

轉載于:https://www.cnblogs.com/errornull/p/10435814.html

總結

以上是生活随笔為你收集整理的C#考核知识点总结的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。