拿這個例子:如何擺脫轉換費用?
customer.Salary = Convert.ToDecimal(string.Format("{0}! ", Console.ReadLine().ToString()));
(1)在C#中,爲什麼我們要始終把的ToString()得到它的權利?
(2)Convert.To ...它不會不必要地產生開銷嗎?
進一步在下面給出的代碼中:它接受錯誤:「輸入字符串的格式不正確」,接受用戶輸入後。
// Main begins program execution.
public static void Main()
{
Customer customer = new Customer();
// Write to console/get input
Console.Write("Enter customer's salary: ");
customer.Salary = Convert.ToDecimal(string.Format("{0}! ", Console.ReadLine().ToString()));
Console.WriteLine("Salary in class variable is: {0}", customer.Salary.ToString());
Console.Read();
}
class Customer
{
public Decimal Salary { get; set; }
}
在這裏,無論是我必須用:
string sal = Convert.ToDecimal(string.Format("{0}! ", Console.ReadLine().ToString()));
customer.Salary = Convert.ToDecimal(sal);
或者,我必須更改數據類型本身的Customer類。
這種開銷可以通過泛型中的任何東西來避免嗎?
你能解釋內部Convert.ToDecimal和Decimal.Parse是如何工作的嗎? – RKh 2010-10-28 15:53:02
通常,您應該更喜歡'Decimal.TryParse',因爲它會嘗試進行轉換,並且如果轉換不成功則返回'false'。另一方面,Convert.ToDecimal會在錯誤時拋出異常。特別是在用戶界面代碼中,處理「假」返回值比處理異常要容易得多。在內部,我真的不知道這兩者有何不同。我懷疑在將字符串轉換爲小數時,Convert.ToDecimal結束調用Decimal.Parse。 – 2010-10-28 16:21:30