今天在同仁的Code裡面看到陌生的運算子,如下:
private string GetCustomerDetail(Customer customer)
{
var id = customer?.Id ?? "123456";
//ToDo....
}
先不管這個Method的用處,看內容會發現「?.」「??」這些運算子是什麼用處呢?
今天在同仁的Code裡面看到陌生的運算子,如下:
private string GetCustomerDetail(Customer customer)
{
var id = customer?.Id ?? "123456";
//ToDo....
}
先不管這個Method的用處,看內容會發現「?.」「??」這些運算子是什麼用處呢?
由於很久沒有寫Stream.IO 的相關程式,剛好今天有一個需求是Parser 文件,「判斷檔案是否存在,不存在就建立新的檔案,存在就寫檔」,
結果碰到一個寫檔入門常見的錯誤,
類型 'System.IO.IOException' 的未處理例外狀況發生於 mscorlib.dll 其他資訊: 由於另一個處理序正在使用檔案 'C:\Users\Administrator\Desktop\xxxx.xml',所以無法存取該檔案。
直覺反應這是串流沒有被正常關閉,導致另一個串流想要IO的時候被Lock 住了。
在幫同仁Code Review 的時候,看到「標準」的IO寫法,如下:
try
{
FileStream fileStream = new FileStream("c://test.txt",FileMode.Create,FileAccess.Write);
//IO Process...
fileStream.Close();
}
catch (Exception _Exception)
{
throw;
}
就是基本的try catch,然後就是 Release Resource (Dipose),但其實有更好的寫法,就是使用「using statement」,如下:
前陣子有一篇文章 [Asp .Net MVC] AjaxHelper 失效了!Why? ,在介紹使用 Unobtrusive Ajax 來讓AjaxHelper 的 Form Submit 正常,
往下開發的時候,發現我們在使用MVC 資料標記(Data Annotations),每次都得回到後端檢核後才能知道前端傳回來的資料是否符合條件,
才發現原來沒有使用到 Unobtrusive Validate 的機制來做Client 端的資料檢核。
C# 擴充方法(Extension Methods) ,C# 3.0 的「新」功能,其實也不新了畢竟C# 6.0都要出了。「擴充方法」顧名思義在原生類別擴充新的方法出來供人使用。