一直在阅读有关out
/ ref
和tuple
的内容,但是对于我的生活,我无法弄清楚如何实现返回三(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表格(只是一个小片段):
关于这一点的几点说明:
有人能提供一个如何将“折扣”和“比较”与我的计算价格相结合的可靠实例吗?
谢谢!
答案 0 :(得分:1)
我并没有真正遵循你的具体情况,但是......如果你试图从一个函数中返回3个东西,那么你做错了,你的代码将很难维护。只需定义一个具有3个属性的新类,并返回该类的实例。
答案 1 :(得分: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());