iT邦幫忙

2022 iThome 鐵人賽

DAY 5
0
Software Development

離開C#新手村的最後試煉系列 第 5

試煉5 - const 的坑踩過嗎

  • 分享至 

  • xImage
  •  

開始試煉

const 常數 這個關鍵字 常見的說明 就是把長久不會變的內容設定為常數像是
圓周率可以設定3.14這樣

void Main()
{
    var radius = 10;
    var area = Constants.Pi * radius * radius;
    area.Dump();
}
public static class Constants
{
    public const double Pi  = 3.14;
}

快要出新手村的各位,多多少少都會遇到分層的專案了吧
也就是參考DLL時 用 const 要非常小心
舉例來說 有兩個專案 一個是Web MVC專案 一個是Core專案
把上面Constants class 放在Core專案 然後在 Web MVC專案參考 Core.dll
有一天需求變了說Pi要改成 3.14159
於是 成這樣
public const double Pi = 3.14159;
然後重建方案後 想說只有改 Core 專案 就只有更新Core.dll
這時候才會發現 Web MVC專案的 Pi 還是3.14

因為 const 常數 就不會變 所以編譯器 就幫你把所有用到Pi的地方都替換成3.14了
編譯過的程式碼根本不會有Pi存在
編譯過的程式碼就像是這樣

void Main()
{
    var radius = 10;
    var area = 3.14 * radius * radius;
    area.Dump();
}

所以 我基本上知道這原理後沒用過 const 一律用 static readonly 就像是試煉1的程式碼

延伸試煉

有一篇文章講解得非常清楚 很推薦觀看
C# - const vs static readonly

結束試煉

這個試煉 算是我實際遇到的問題 遇過一次印象深刻阿


上一篇
試煉4 - 用過 default 和 params 嗎
下一篇
試煉6- Console 程式的例外處理
系列文
離開C#新手村的最後試煉30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言