推 CloudyWing: 括弧那個手殘打錯 XD 12/12 00:17
既然那個括弧是打錯的,那
public static String KeyName {
get {
return System.Web.Configuration.
WebConfigurationManager.AppSettings["KeyName"];
}
}
就是屬於這個類別的唯讀靜態屬性,
那我想這個倒是沒有甚麼問題,不過可能你是想問說他寫成這樣也沒有簡寫阿
的確,這個時候回頭看我文章上面的
5. 針對不需要自訂存取子程式碼的簡單屬性,請考慮使用自動實作的屬性。
{set;get;} 是用在簡單屬性的狀況下,如果你要做驗證如,
public int Age
{
get
{
return age;
}
set
{
if(value >= 0)
{
age = value;
}
else
throw new ArgumentOutOfRangeException();
}
}
這種狀況就不能簡寫了。
※ 編輯: BigLoser (113.61.160.93), 12/12/2014 00:23:38
→ CloudyWing: 除了第2點是看原PO一樓回覆我才知道外,其他點都知道 12/12 00:21
→ CloudyWing: 至於為什麼要設靜態屬性而非靜態方法我還是不理解 12/12 00:22
→ CloudyWing: 大概是有什麼觀念還沒轉過來吧(嘆氣) 12/12 00:23
→ BigLoser: 為什麼他會是一個方法? KeyName看起來就是一個屬性呀 12/12 00:24
→ BigLoser: 就像是{人類}類別中有一個DNA那,DNA是一個屬性不會是 12/12 00:25
→ BigLoser: 方法,你說對吧? 如果說{跑步}那他就會是一個方法 12/12 00:26
→ BigLoser: 而不是一個屬性,方法和屬性應該滿容易區分的 12/12 00:26
推 CloudyWing: 因為我覺得我只是要撈設設定檔的值 12/12 00:27
→ CloudyWing: 但我不想一直重複寫這些程式碼 12/12 00:29
→ CloudyWing: 所以我把這些撈取設定檔的行為都個別封裝成 12/12 00:30
→ CloudyWing: static method 這些static method再集中放在一個 12/12 00:31
→ CloudyWing: static class管理,我的想法是這樣 12/12 00:31
→ BigLoser: 這個問題請上一篇回你的ssccg大來回答XD 12/12 00:37
推 CloudyWing: 應該說,我的想法是如果我每次都是要從設定檔撈值來用 12/12 00:56
→ CloudyWing: 那我會設方法,但如果我是從設定檔撈值存起來 12/12 00:57
→ CloudyWing: 則用fields或property,此這案例來說應該歸類成前者 12/12 00:59
→ ssccg: 用property的意義就是說這class有個叫KeyName的值 12/12 01:03
→ ssccg: 其他人只要用就好,不用去想這裡面的值是怎麼生出來的 12/12 01:04
→ ssccg: 今天實作是撈設定檔,明天不能改成回傳常數? 12/12 01:05
推 CloudyWing: 換個方式來說,今天要寫一個和時間有關的工具,其中一 12/12 01:08
→ CloudyWing: 個功能是取得現在時間,你們也會寫property? 12/12 01:09
http://msdn.microsoft.com/zh-tw/library/system.datetime.now%28v=vs.110%29.aspx
public static DateTime Now { get; }
DateTime saveNow = DateTime.Now;
※ 編輯: BigLoser (113.61.160.93), 12/12/2014 01:10:09
推 CloudyWing: !!!那看來真的是被原有語言觀念影響太大 orz 12/12 01:13
→ BigLoser: 可能吧,像我主要寫C# 就覺得理所當然.. 12/12 01:19
→ BigLoser: 時間阿時間,請問現在的時間是多少呢? (屬性) 12/12 01:19
→ BigLoser: 時間阿時間,可以幫我把這個日期加一天嗎? (方法) 12/12 01:19