gpt4 book ai didi

c# - ArgumentException 多个参数和嵌套参数的 ParamName 约定

转载 作者:行者123 更新时间:2023-12-02 00:38:40 25 4
gpt4 key购买 nike

考虑我有一个类如下:

class ProductPrice
{
public string ProductName { get; set; }
public decimal RegularPrice { get; set; }
public decimal SalePrice { get; set; }
}

我有一个这样的函数:

public decimal CalculateDiscount(ProductPrice thePriceInfo)
{
if (thePriceInfo.SalePrice > thePriceInfo.RegularPrice)
throw new ArgumentException("Sale price cannot be greater than regular price.","?????");

return (thePriceInfo.RegularPrice-thePriceInfo.SalePrice) / thePriceInfo.RegularPrice;
}

我想知道当我调用 ArgumentException 的构造函数时,应该为 ParamName 参数(上面的 ??????)输入什么。

我想知道以下情况下 ParamName 的标准约定是什么:

1) 导致异常的参数嵌套在一个类中(即 thePriceInfo.SalePrice)

2) 异常是由于两个不同参数之间的交互造成的(在本例中 SalePrice 高于 RegularPrice)。你用逗号或其他东西分隔它们吗?

此外,ParamName 参数实际上用于 .NET 本身或流行的第 3 方工具中的任何内容,还是只是提供信息,供堆栈中的其他调用代码使用?

最佳答案

我不能代表可能使用这些数据的第三方工具,但我认为没有任何约定。 MSDN建议它仅供引用:(对于最终用户,或者对于可能在上游的另一个程序集中捕获它的开发人员,以便他们可以相应地处理它)

The content of paramName is intended to be understood by humans.

因此,请设置您认为能够传达正确信息的任何值。 IMO,正常价格没有错,但促销价是错误的,所以要么是“SalePrice”,要么是“ProductPrice.SalePrice”。

<小时/>

如果我能观察一下......

这里实际上没有任何无效或超出范围的参数 - 只是指定一个金额不能小于另一个金额的业务规则。这并不异常(exception),也不需要异常(exception)。

我将您的逻辑分为两部分...一个用于验证价格,另一个用于计算折扣。

public bool IsDiscountValid(ProductPrice pp)
{
return pp.SalePrice <= pp.RegularPrice;
}

public decimal CalculateDiscount(ProductPrice pp)
{
return (pp.RegularPrice - pp.SalePrice) / pp.RegularPrice;
}

现在调用者可以以最适合您的程序的任何方式通知用户:

if (IsDiscountValid(thePriceInfo))
return CalculateDiscount(thePriceInfo);

MessageBox.Show("Sale price cannot be greater than regular price.", "Invalid Price");

// or display text in a Label or whatever, depending on which platform you're using

关于c# - ArgumentException 多个参数和嵌套参数的 ParamName 约定,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28335398/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com