Re: [問題] 新手學C#,有關{get;set;}的疑問

作者: StupidGaGa (笨嘎嘎)   2014-12-26 09:58:03
提供一點我個人的實作經驗:
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:敗絮其內,自己看到自己的模樣。
作者: AmosYang (泛用人型編碼器)   2014-12-26 11:40:00
就「時區轉換」來說,還是別土法鍊鋼…參考一下TimeZoneInfo 及 DateTimeOffset 吧
作者: andymai (人生只有一次)   2014-12-27 12:53:00
一樓也只是好心說一下吧~而且問題不是在於什麼高不高尚人家好心回答也沒帶情緒~卻換來這樣的回應~那還有誰想回?

Links booklink

Contact Us: admin [ a t ] ucptt.com