C#
這里的 orders 是一個 JSON 物件。我有 3 個可能是 int 的字串,我正在驗證它(使用擴展方法),但是我似乎為每個變數重復相同的代碼。我正在尋找一種方法來優化它,因為它似乎很冗長。我也可以在此消費日期或雙重檢查嗎?
int itemNumber;
int customer;
DateTime date = DateTime.Now;
string dateFormatted = date.ToString("dd-MM-yyyy");
int itemQuantity;
double itemCost;
bool result;
int orderNum = int.Parse(orders.OrderNumber);//convert string to int
int validInt;
double validDbl;
//loop through each of the orders
foreach (var order in orders.OrderDetails)
{
string item = order.ItemNumber;
string cusNumber = order.CustomerNumber;
string orderDate = order.OrderDate;
string quantity = order.Quantity;
string cost = order.Cost;
//string field;
result = item.isNumber();
// Validate item number
validInt = validate(item);
//}
int counter = 0;
if (validInt != 0)
{
itemNumber = validInt;
counter ;
}
else
{
errMessage = $"{item} is not a valid integer value.";
errors.Add(errMessage);
}
// Validate customer number
validInt = validate(cusNumber);
if (validInt != 0)
{
customer = validInt;
counter ;
}
else
{
errMessage = $"{cusNumber} is not a valid integer value.";
errors.Add(errMessage);
}
validInt = validate(quantity);
if (validInt != 0)
{
itemQuantity = validInt;
counter ;
}
else
{
errMessage = $"{quantity} is not a valid integer value.";
errors.Add(errMessage);
}
validDbl = isDouble(cost);
if (validDbl != 0)
{
itemCost= validDbl;
counter ;
}
else
{
errMessage = $"{quantity} is not a valid integer value.";
errors.Add(errMessage);
}
}
然后,如果計數器 = JSON 物件(陣列)中的專案總數,我將使用計數器和 errMessage 來顯示正確的訂單。
uj5u.com熱心網友回復:
更智能的驗證
static bool validate(string input, out int field, ref int counter, List<string> errors){
bool ok = Int32.TryParse(input, out field);
if(ok){
counter ;
}else{
errors.Add($"{input} is not a valid integer value.");
}
return ok; // just in case we need it
}
現在
validate(item, out itemNumber, ref counter, errors);
validate(cusNumber, out customer, ref counter, errors);
validate(quantity, out itemQuantity, ref counter, errors);
.....
或者您可以驗證成員函式并將計數器和錯誤作為成員變數,在這種情況下,它們不需要作為引數傳遞
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/442916.html
上一篇:在C中列印帕斯卡三角形
