2012-04-23 67 views
1

我想知道這被認爲是更正確的或者更好的做法:C# - 當轉換數值類的屬性

類的一部分:

public class foo 
{ 
private Single amount; 
public Single Amount 
{ 
get 
    { 
     return amount; 
    } 
set 
    { 
     amount = Convert.ToSingle(value); 
    } 
} 
} 

public Single Amount {get;set;} 

並轉換代碼中的值如下:

foo myFoo = new foo(); 
myFoo.Amount = Convert.ToSingle(somevalue); 

我將從數據庫中獲取值(somevalue),以便我可以輕鬆地將所有值作爲字符串傳遞給類,並處理所有的轉換(或者在數據訪問層進行轉換)。我只想知道哪個更好(或者我沒有想到)。

+0

第二個對我來說更具可讀性。 – 2012-04-23 15:05:32

+1

無論如何,你的第一個例子受到'Single'的限制,因爲它是屬性類型。除非'價值'可以隱式施放,否則它永遠不會進入你的制定者。 – Marc 2012-04-23 15:07:47

+1

第一個不會工作,因爲你只能通過一個單一的財產得到。這使得Convert.ToSingle什麼都不做。 – zeal 2012-04-23 15:09:30

回答

4

第二個肯定是最好IMO:

public Single Amount { get; set; } 

你不希望你的類做背景模糊的東西都是不明確從外部(如類型鑄造)。

符合類屬性格式的是外部代碼的工作,而不是相反。

0

儘管行爲差異,性能應該是可以忽略不計

+1

他們不一樣,行爲是不一樣的。 – 2012-04-23 15:06:08

0

他們指定的短版最主要的原因是這樣的,你沒有寫全長的版本,所以你應該先有自己的短版:

public Single Amount { get; set; } 

隱式轉換是一個非常不好的想法,你一定要明確的轉換,以便你的用戶知道轉換正在進行,你的功能不會意外地採取任何事情。考慮到當你在你的屬性中進行轉換時,你的屬性會期待一個對象,它可能是任何可轉換爲單個對象的對象,因此你可能會引入錯誤。

你不希望你的財產的用戶發現他分配了一些錯誤,導致它由於某種原因變成0,你寧願編譯器提前警告他,而不是他必須經過一些儘管調試。

這不是你的責任,轉換他們給你的任何東西,而是期望他們給一個單一的...

相關問題