我有以下if else语句来检查价格的值。但是,我只是好奇我怎样才能将它转换为switch语句。
if(sellingPrice <= costPrice)
{
Response.Write("<script>alert('The value of the selling price must be higher than the cost price!','_self')</script>");
}
else if(sellingPrice == 0)
{
Response.Write("<script>alert('The value of the selling price must not be equal to zero!','_self')</script>");
}
else if(costPrice == 0)
{
Response.Write("<script>alert('The value of the cost price must not be equal to zero!','_self')</script>");
}
else
{
con = new SqlConnection(@"Data Source = ARIES - PC\SQLEXPRESS; AttachDbFilename = D:\Visual Studio 2015 Web Forms\POS_with_Inventory\Database\Point_Of_Sales.mdf;Integrated Security = True");
con.Open();
cmd = new SqlCommand("addStocks", con);
cmd.Parameters.AddWithValue("ProductID", productId);
cmd.Parameters.AddWithValue("ProductName", itemName);
cmd.Parameters.AddWithValue("ProductCategory", category);
cmd.Parameters.AddWithValue("ProductDesc", description);
cmd.Parameters.AddWithValue("ProductCostPrice", costPrice);
cmd.Parameters.AddWithValue("ProductSellingPrice", sellingPrice);
cmd.Parameters.AddWithValue("ProductQuantity", quantity);
cmd.Parameters.AddWithValue("RemainingProduct", quantity);
cmd.Parameters.AddWithValue("ProductPurchased", datePurchased);
cmd.Parameters.AddWithValue("ProductStatus", status);
cmd.ExecuteNonQuery();
cmd.Dispose();
con.Close();
}
答案 0 :(得分:0)
您展示的案例是:
这很明显超出了开关的范围。您需要将其归结为只检查一个值(A或B)与常量。
此规则因C#7.0而略有侵蚀,添加pattern matching用于切换。但我很确定您只能切换单个值的规则仍然适用。
编辑:实际上,通过模式匹配,它是可能的。您必须将A和B移动到单个类型(struct,tuple,anonymous类型)。但是一旦oyu这样做,when子句就可以让你把它拉下来(当a.SellPrice == a.BuyPrice时)。但这真的是一个值得努力的问题。
编辑2:让#s写一些关于我的想法的代码。我不确定这会编译,但它有一个坚实的案例。
switch(priceGroup){
case prices p when p.sellingPrice <= p.costPrice:
break;
case prices p when p.sellingPrice == 0:
break;
case prices p when p.costPrice == 0:
break;
}