Browse by Tags

筆記:int?(Nullable<int>)運算與??運算子優先順序
同事回報某段C#程式發現Bug: int lastQty = 100; int ? soldQty = null ; int leaveQty = lastQty - soldQty ?? 0; soldQty 由其他系統傳入可能為 null,原本我的想法是遇到 soldQty==null 就視為0,此時 leaveQty 應等於 lastQty,但以上程式執行結果與預期不同,leaveQty == 0! 這枚Bug隱藏了兩項疑問: ?? 運算子(Operator)與加減乘除誰先誰後? int與null加減乘除時結果會是什麼...
Posted 14 July 2016 09:32 PMJeffrey | 2 comment(s) 5,204
Filed under:
跨平台一大步,.NET Core 1.0正式登場!
這幾天在我FB洗版的大消息,莫過於.NET Core 1.0跟ASP.NET Core 1.0(原先命名為ASP.NET 5)已正式發佈! Scott Hanselman 說 ,他加入微軟多年一直致力.NET與Open Source推廣,在15年後.NET Core 1.0推出的這一刻,終於攀上巔峰。 .NET Core讓C#走出Windows,正式登陸Mac、RedHat Enterprise Linux、Ubuntu Linux,支援C#、VB、F#,而整個.NET Core都Open Source並放在Github...
Posted 30 June 2016 07:06 AMJeffrey | 3 comment(s) 13,641
Filed under:
網頁內嵌JSON建立JS物件之日期轉換問題
題目讀來有點不知所云,用實例講解才會清楚。在ASP.NET MVC Controller端建立的物件,想在輸出View的同時轉成JavaScript端物件,最直覺的做法是將物件轉為JSON字串,再以Razor語法內嵌一段var dataItem = { "num_prop": 1234, "str_prop": "ABCD", "bool_prop": true }; JavaScript語法,直接建立JavaScript物件...
Posted 29 June 2016 12:22 AMJeffrey | with no comments 3,038
Filed under: ,
Dapper出現sql_variant is incompatible with ntext
有個古老資料庫,裡面還有NTEXT型別欄位(SQL 2005加入NVARCHAR(MAX)後,應該沒人想用TEXT/NTEXT了),用 Dapper 執行一段SQL更新NTEXT欄位,發生古怪錯誤。 指令如下: cn.Execute("UPDATE SomeTable SET NTextField = @data WHERE Id = 1", new { data = "…" }); 錯誤訊息為:sql_variant is incompatible with...
Posted 13 May 2016 08:05 AMJeffrey | with no comments 2,292
Filed under: ,
改良式GetCachableData可快取查詢函式
多年前發展過一種 可快取查詢 :呼叫GetCachableData函式時傳入Cache Key、查詢或產生資料Callback函式、Cache保留期限(或指定閒置未用多久自動清除)三個參數,GetCachableData會依「若Cache有資料就直接沿用;若Cache無資料則當場產生並存入Cache」原則聰明處理,從此不需操心何時該查資料何時用Cache,應用起來挺方便的。 using System; using System.Collections.Generic; using System.Linq;...
Posted 12 April 2016 09:14 PMJeffrey | with no comments 4,287
Filed under:
Visual Studio編譯小技巧:工具程式一檔搞定
我經常寫小工具程式,不用安裝程式,單一EXE檔隨Copy隨用是最理想的部署設計。不過,程式稍稍複雜就難免依功能屬性拆分多個專案,有時需用到跨專案的共享程式庫,至於引用Json.NET、Dapper、NLog等必備套件的情況更是普遍。例如以下專案,Tool為Console Application(EXE)專案,引用Model類別程式庫專案,還參考了Json.NET: 編譯後會產生三組組件檔:Tool.exe、Model.dll與Newtonsoft.Json.dll,得一起部署到客戶端才能正確執行...
Posted 06 April 2016 10:12 PMJeffrey | 12 comment(s) 14,661
Filed under:
我的.NET舊版相容情結
前陣子有篇文章提到微軟 中止.NET 4.0/4.5/4.5.1技術支援 ,結論是:1) Windows預設會自動升級到.NET 4.5.2,2) 用.NET 4.0/4.5/4.5.1寫的程式不需修改就可直接執行(僅有極少例外)。 很妙的是,每回建立新專案,我下意識總是挑選較低版本,例如:開.NET 4專案若沒用到async、await等.NET 4.5專屬特色,我會優先選.NET 4.0,心裡總覺得:萬一使用者的電腦的.NET版本比較舊,程式也能跑。 其實,依目前.NET的版本更新政策,使用者機器都該升級到...
Posted 24 February 2016 07:27 PMJeffrey | with no comments 4,899
Filed under:
蛤,微軟停止.NET 4.0/4.5/4.5.1的技術支援?會對我的系統造成影響嗎?
2016/1/12是個大日子,有 好幾項微軟產品 結束技術支援,包含: Windows 8 IE 8/9/10 (狂賀) .NET 4.0/4.5/4.5.1 生活周遭的Windows 8都已免費升級到Windows 8.1或Windows 10,受影響者應該有限。而官方停止支援舊版IE是好消息,以後可以大聲客戶說我們不支援IE 8/9/10,最後要不要支援是另一回事,但至少可以下巴抬高45度「好吧!看你可憐,我再幫你一次,下不為例哦~」,網頁開發者等這一天應該很久了… (謎:接洗謀摳零A代誌,快醒醒呀孩子...
Posted 13 January 2016 10:45 PMJeffrey | 2 comment(s) 8,970
Filed under:
AssemblyInformationVersion踩雷記
前幾天回答網友QOO提問,又多學會「 AssemblyFileVersion不支援自動跳號,未設定時會引用AssemblyVersion 」新知識,知道這些就夠了嗎?並沒有,今天又踩一雷,再獲冷知識一枚。 同事升級專案的Newtonsoft.Json.dll到7.0.1版,NuGet顯示版本為7.0.1版: 由於NuGet安裝時沒自動加入 bindingRedirect 設定,手動加入時為了找出newVersion的正確版號,參考了檔案資訊: 檔案版本是AssemblyFileVersion,那麼產品版本就是AssemblyVersion囉...
Posted 25 November 2015 09:19 PMJeffrey | with no comments 3,179
Filed under:
再談組件版本導向技巧與Copy Local屬性
組件版本相容是常見的.NET實務問題。用以下的解決方案舉例,假設有個 MyConApp Console Application參照 MyLib Class Library,兩個專案都用NuGet裝了Newtonsot.Json(Json.NET)組件,差別在MyConApp用的是Json.NET 7.0版,MyLib用的則是6.0版。 不意外地,因為Json.NET版本不同,將會出現版本相容錯誤: FileLoadException was unhandled 無法載入檔案或組件'Newtonsoft...
Posted 13 October 2015 06:37 AMJeffrey | with no comments 3,336
Filed under: ,
縮略字大小寫之惑:LINQHelper還是LinqHelper?
在.NET,舉凡變數、類別、命名空間名稱,若由多個英文字組成(例如:Temp Folder Name),大小寫有兩種規則可遵循: Pascal命名法 第一個字母及所有單字的第一個字母都用大寫,如TempFolderName Camel命名法 第一個字母取小寫,隨後串聯文字的第一個字母採大寫,如tempFolderName 至於何時該用Pascal何時Camel?我的記法是:區域變數、私有欄位屬性,以及方法參數用Camel,其餘用Pascal。 不過有個情況我一直沒搞清楚,當名稱中有一部分是英文縮寫時...
Posted 08 October 2015 09:04 AMJeffrey | 8 comment(s) 6,662
Filed under:
【茶包射手日記】CSHTML ViewBag無法使用擴充方法
在ASP.NET MVC裡定義了一個 擴充方法 (Extension Method),打算在CSHTML中使用:(以下擴充方法為脫褲子放屁,純屬示範,為String新増一個GetLength()方法傳回字串長度) namespace BBDPWeb.Models { public static class ExtMethodDemo { public static int GetLength( this string s) { return s.Length; } } } 在Action中,使用Title存入標題字串放入ViewBag...
Posted 01 October 2015 08:02 AMJeffrey | with no comments 3,067
Filed under: ,
C# TypeScript雙頻式View Model型別程式產生器範例
NG筆記3-使用TypeScript 一文曾提及「另建程式碼產生器專案,將ViewModel規格轉成JavaScript(或TypeScript)、C#類別」的做法,方便Client及Server端共享一致的強型別ViewModel,規格如有更動,重跑程式產生器就能同步更新。 日前網友Ark詢問,有無上述做法的實際範例可供參考。先前其他專案也曾有類似程式產生器需求,手邊有運行多時的實例,但綁死過多專屬邏輯,複雜度過高難以抽離重用,算一算手邊的確缺少一組能獨立運行的淺顯範例,索性另起一套簡單的概念驗證...
await與Task.Result/Task.Wait()的Deadlock問題
async/await是.NET 4.5+加入的新玩意兒。.NET 4推出的 Task 簡化了非同步程序的撰寫,async/await則讓程式碼簡潔度更上一層樓。如果大家對Thread、Task、aysnc、await還不熟悉,我找到兩篇還算淺顯易讀的對岸文章- async & await 的前世今生 、 异步编程 In .NET ,文章完整涵蓋C#在多執行緒程式撰寫上的演進,從.NET 1.1到.NET 4.5,能做到的事跟背後運用機制依舊,寫法卻愈來愈簡潔,身為.NET開發人員是件幸福的事...
Posted 06 August 2015 06:35 AMJeffrey | with no comments 7,860
Filed under:
HttpCookieCollection的foreach陷阱
我想在ASP.NET MVC裡用foreach列舉所有Cookie, HttpRequestBase.Cookies 是不二人選。Cookies屬性的型別為 HttpCookieCollection ,既然是HttpCookieCollection,foreach拿到的應該就是HttpCookie吧?很自以為是地寫好以下程式準備收工: public ActionResult TestCookies() { var req = this .HttpContext.Request; StringBuilder...
Posted 17 July 2015 07:05 AMJeffrey | with no comments 3,244
Filed under: ,
更多文章 « 上一頁 - 下一頁 »

搜尋

Go

<March 2017>
SunMonTueWedThuFriSat
2627281234
567891011
12131415161718
19202122232425
2627282930311
2345678
 
RSS
創用 CC 授權條款
【廣告】
twMVC
最新回應

Tags 分類檢視
關於作者

一個醉心技術又酷愛分享的Coding魔人,十年的IT職場生涯,寫過系統、管過專案, 也帶過團隊,最後還是無怨無悔地選擇了技術鑽研這條路,近年來則以做一個"有為的中年人"自許。

文章典藏
其他功能

這個部落格


Syndication