在我的應用程序中,我有一個文本框 - txtDiscount
,管理員可以爲某個用戶設置折扣百分比,或者他可能不會。在後端我要保存的數據,所以現在我有這樣的:如何在輸出允許爲空時使用double.TryParse?
double? discount = null;
if (!string.IsNullOrEmpty(txtDiscount.Text))
{
if (!double.TryParse(txtDiscount.Text, out discount)) errors.Add("Discount must be a double.");
}
所以我得到一個錯誤的invalid argument
,顯然它是discount
如果我要使用它TryParse
無法可空。我看到很多人都在爲這種情況進行擴展,但現在我不認爲這是必要的。我能想到的使用另一個變量,像這樣的:
double? discount = null;
private double _discount;
if (!string.IsNullOrEmpty(txtDiscount.Text))
{
if (!double.TryParse(txtDiscount.Text, out _discount))
{
errors.Add("Discount must be adouble.");
}
else
{
discount = _discount;
}
}
,然後用我的可空discount
的值傳遞給數據庫。但我其實不喜歡上面的代碼,在我看來,這樣的任務相當複雜,但我想不出更好的東西。那麼如何處理這種情況而不使用擴展方法呢?
爲什麼你過於複雜的應用程序通過處理特殊情況設計:
就個人而言,我只是與分析可空雙擴展名去了?爲什麼系統總是假設折扣價值(0.0),並且只有當有人改變這一點時,你纔會得到一個新的數字。當每個計算總是包含折扣(即使它是0.0),那麼你不需要特殊的處理。對於你的GUI你確實需要一些空字符串檢查,但不要犯錯誤,並在你的前端反映數據庫設計。 – Samuel
那麼,在這種情況下,我認爲可以爲空,因爲'0.0'仍然是一個值,你可以告訴用戶有0.0%的折扣,當可爲空時表示這個用戶實際上沒有折扣,更有意義。但即使我的問題更一般,即使我要將該類型更改爲「dobule」,我仍然想看看如何處理這種情況,它看起來像很標準的東西。 – Leron
@Leron如果折扣是負面的? –