-1

一直在阅读out/reftuple,但对于我的生活,我无法弄清楚如何实现一种返回三 (3) 个值的方法(无论是在计算我的主要值的同一方法中,还是使用单独的方法)。我能够使用一个处理服务定价的值(主要值)执行计算。

这是我为计算该主要值所做的一个片段:

public class Calculations
{
    public decimal decFinancialAccount(QuoteData quoteData)
    {
        if (quoteData.StepAssetInformation.FinancialAccountDropDown
            == StepAssetInformation.FinancialAccount.None)
            return 0;
        else if (quoteData.StepAssetInformation.FinancialAccountDropDown
            == StepAssetInformation.FinancialAccount.One)
            return PriceQuote.priceFinancialAccount;
        else if (quoteData.StepAssetInformation.FinancialAccountDropDown
            == StepAssetInformation.FinancialAccount.Two)
            return (PriceQuote.priceFinancialAccount * 2);
        ...
        else
            return 0;
    }
    public decimal CalculateChapter7(QuoteData quoteData)
    {
        decimal total = PriceQuote.priceChapter7;

        ...
        total += this.decFinancialAccount(quoteData);

        return total;
    }
}

以上效果很好。它显然decimal添加了其他的,但你明白了。

现在,我想对CalculateChapter7返回的值执行额外的计算。

第一个值是DiscountChapter7/ discount(方法中的变量?)价格:超过一定数量,每增加 50 就会应用折扣。如果必须,我可以将它们全部列出(而不是让自己复杂化)。折扣没有固定的公式,我只是创建了一个 Excel 表格来可视化我的折扣(见下文)。

第二个值是CompareChapter7/ compare(方法变量?)价格:对于我提供的每个折扣价,都会与其他人对相同服务的收费进行比较。同样,本身没有公式,我只是使用 Excel 表格任意计算出来。

另外,我想(在“折扣”和“比较”中)做一个简单的减法来显示“节省”(计算价格 - 折扣价格 = 节省)和“差异”(其他律师收费 - 折扣价格 = 差异)。我想当我得到上面的两个值时,这两个额外的值会很简单。

这是我的 Excel 表(只是一小段):

带有我想要的价格的 Excel 表

关于这一点的几点说明:

  1. 在 799 和 999 之间没有折扣(“四舍五入”列只是为了方便我将这些数字增加 50 并且不相关)。
  2. Excel 公式非常简单(费用 - 折扣价 = 节省;其他律师收费 - 折扣价 = 差价) - 这是我试图在我的代码中实现的。

谁能提供一个可靠的例子来说明如何将“折扣”和“比较”与我的计算价格结合起来?

谢谢!

4

2 回答 2

1

我并没有真正遵循你的具体情况,但是......如果你试图从一个函数中返回 3 个东西,那么你做错了,你的代码将很难维护。只需定义一个具有 3 个属性的新类并返回该类的一个实例。

于 2012-05-29T14:02:28.087 回答
0

您需要创建一个包含所有返回值的新类。如果它不打算在其他任何地方使用,您可以将类嵌套在 Calculations 类中,如下所示,但这取决于您:

public class Calculations
{
    public class Result
    {
        public decimal Total { get; set; }
        public decimal Discount { get; set; }
        public decimal Comparison {get; set; }
    }

    public Result CalculateChapter7(QuoteData quoteData)
    {
        Result result = new Result();
        result.Total = ...;
        result.Discount = ...;
        result.Comparison = ...;
        return result;
    }
}

当你这样做时,所有三个返回值都被打包成一个对象,然后返回。每次调用该方法时,它都会创建一个新的 Result 对象并使用该方法调用的所有值填充它。因此,要在调用方法后读取返回值,您需要从返回的对象中读取每个属性。例如,您可以执行以下操作:

Calculations calc = new Calculations();
Calculations.Result result = calc.CalculateChapter7(...);
string output = string.Format("Total = {0}, Discount = {1}, Comparison = {2}", result.Total.ToString(), result.Discount.ToString(), result.Comparison.ToString());
于 2012-05-29T14:05:29.037 回答