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