C_Sharp 板


LINE

提供一點我個人的實作經驗: Field:供class內部使用; Property:供class外部使用。 我舉個簡單的例子,我想你在寫網頁也常會遇到的問題, 時間轉換的問題。 public class Game { private DateTime GreenwichMeanTime = DateTime.UtcNow; //public DateTime GreenwichMeanTime //{ // get { return DateTime.UtcNow; } // private set; //} public DateTime TaiwanTime { get { return this.GreenwichMeanTime.AddHours(8); } set { this.GreenwichMeanTime = value.AddHours(-8); } } public DateTime JapanTime { get { return this.GreenwichMeanTime.AddHours(9); } set { this.GreenwichMeanTime = value.AddHours(-9); } } public void Delay3Second() { this.GreenwichMeanTime = this.GreenwichMeanTime.AddSeconds(-3); } } GMT是class內部在用的時間, 不管你是要加減乘除,還是要作任何運算,在class內部就是GMT。 當有其他client用時間的時候, 不管是選擇日本時間還是台灣時間,基本上都是GMT。 在JAVA早期,我要存取某個變數時, 為了要保持封裝的特性,就會另外寫GetTaiwanTime、SetTaiwanTime, 再抽像做成介面的時候,這些Get、Set會另外抽起來做成「屬性介面」, 而public method也會另外抽起來做成「方法介面」, 屬性介面+方法介面=class介面。 講那麼多,還是回到最上面的那兩句話, Field:供class內部使用; Property:供class外部使用。 人話一點就是 Property:金玉其外,其他class看到你的模樣。 Filed:敗絮其內,自己看到自己的模樣。 --



※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 60.249.117.38
※ 文章網址: http://webptt.com/m.aspx?n=bbs/C_Sharp/M.1419559087.A.D6C.html
1F:→ AmosYang: 就「時區轉換」來說,還是別土法鍊鋼…參考一下 12/26 11:40
2F:→ AmosYang: TimeZoneInfo 及 DateTimeOffset 吧 12/26 11:40
是我表達有問題嗎?「舉例」的重點是在TimeZoneInfo? 我怎麼覺得我是在討論Field與Property。 個人對於用不用TimeZoneInfo沒什麼想法, 但是「時區轉換」用TimeZoneInfo就比較高尚嗎? 單純的用加減時數就比較老舊嗎? 我所學到的是,不管方法如何,要因時因地的用才是好方法, 用某某方法比較好的說法,我抱持懷疑。
3F:→ andymai: 一樓也只是好心說一下吧~而且問題不是在於什麼高不高尚 12/27 12:53
4F:→ andymai: 人家好心回答也沒帶情緒~卻換來這樣的回應~那還有誰想回? 12/27 12:54
我的回答也沒有情緒, 時區轉換用哪種方式不是討論重點,要討論時區轉換可以另PO文章討論。 我的問題都只是問題, 土法煉鋼就不是好方法?TimeZoneInfo就比較高尚? 這兩種我都會用,某篇說的日光節約我轉過、也知道, 但我還是很想問, 「什麼時候程式有高不高尚的寫法?」 Object-Oriented Programming 比 Procedural Programming 高尚? Service-Oriented Programming 比 Object-Oriented Programming 高尚? 我還是認為因時因地的程式才是好程式。 這裡的舉例就只是個舉例,並不含其他因素, 如果要加入其他因素,那討論就會偏掉。
5F:→ andymai: 人家也只是好心提一下啊~"高不高尚"的論點是你自己提的~ 12/29 12:54
6F:→ andymai: 不是嗎?人家只是考量到別的使用情境~哪有說比較高尚?因時 12/29 12:58
7F:→ andymai: 因地的當然應該贏廣泛設計式的程式~畢竟都"客制化"了... 12/29 12:59
所以我說,果然接下來的推文就歪串了。 結果都不是在討論Field與屬性,哎… 當舉例參雜別的考量,你會去說舉例有誤? 那我覺得以後版上沒人敢貼code了。 如同有人問說如何在textBox換行, 某人回答 \r\n,後來有人很回說用 Environment.NewLine, 然後還說 \r\n 別土法煉鋼,建議用 Environment.NewLine比較好, 我很想問,有差嗎? 我只想說, 不能因為微軟都幫你處理好了就笨笨的去用那些封裝method, 結果變成只會用,但不知道為何的程式設計師, 有時候土法煉鋼也是能學到不少東西。 如果覺得這舉例不好,那過幾天後我看看情況自刪文章, 反正貼code還會被認為誤導,以後打嘴砲就好, 反正用說的比用實作舉例簡單多了。 ※ 編輯: StupidGaGa (60.249.117.38), 12/31/2014 18:28:23
8F:→ andymai: 都說了人家只是好心提醒,偏偏要想那麼多... 12/31 23:05







like.gif 您可能會有興趣的文章
icon.png[問題/行為] 貓晚上進房間會不會有憋尿問題
icon.pngRe: [閒聊] 選了錯誤的女孩成為魔法少女 XDDDDDDDDDD
icon.png[正妹] 瑞典 一張
icon.png[心得] EMS高領長版毛衣.墨小樓MC1002
icon.png[分享] 丹龍隔熱紙GE55+33+22
icon.png[問題] 清洗洗衣機
icon.png[尋物] 窗台下的空間
icon.png[閒聊] 双極の女神1 木魔爵
icon.png[售車] 新竹 1997 march 1297cc 白色 四門
icon.png[討論] 能從照片感受到攝影者心情嗎
icon.png[狂賀] 賀賀賀賀 賀!島村卯月!總選舉NO.1
icon.png[難過] 羨慕白皮膚的女生
icon.png閱讀文章
icon.png[黑特]
icon.png[問題] SBK S1安裝於安全帽位置
icon.png[分享] 舊woo100絕版開箱!!
icon.pngRe: [無言] 關於小包衛生紙
icon.png[開箱] E5-2683V3 RX480Strix 快睿C1 簡單測試
icon.png[心得] 蒼の海賊龍 地獄 執行者16PT
icon.png[售車] 1999年Virage iO 1.8EXi
icon.png[心得] 挑戰33 LV10 獅子座pt solo
icon.png[閒聊] 手把手教你不被桶之新手主購教學
icon.png[分享] Civic Type R 量產版官方照無預警流出
icon.png[售車] Golf 4 2.0 銀色 自排
icon.png[出售] Graco提籃汽座(有底座)2000元誠可議
icon.png[問題] 請問補牙材質掉了還能再補嗎?(台中半年內
icon.png[問題] 44th 單曲 生寫竟然都給重複的啊啊!
icon.png[心得] 華南紅卡/icash 核卡
icon.png[問題] 拔牙矯正這樣正常嗎
icon.png[贈送] 老莫高業 初業 102年版
icon.png[情報] 三大行動支付 本季掀戰火
icon.png[寶寶] 博客來Amos水蠟筆5/1特價五折
icon.pngRe: [心得] 新鮮人一些面試分享
icon.png[心得] 蒼の海賊龍 地獄 麒麟25PT
icon.pngRe: [閒聊] (君の名は。雷慎入) 君名二創漫畫翻譯
icon.pngRe: [閒聊] OGN中場影片:失蹤人口局 (英文字幕)
icon.png[問題] 台灣大哥大4G訊號差
icon.png[出售] [全國]全新千尋侘草LED燈, 水草

請輸入看板名稱,例如:Soft_Job站內搜尋

TOP