-1

out/refとについて読んtupleでいますが、私の人生では、3つの値を返す方法を実装する方法を理解できません(私のメイン値を計算する同じメソッド内であるか、別々のメソッドであるかどうか)。サービスの価格設定を扱う1つの値(メイン値)で計算を実行できます。

これは、その主な値を計算するために私が行ったことの抜粋です。

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シートを作成しました(以下を参照)。

2番目の値はCompareChapter7/ compare(メソッドの変数?)価格です。私が提供するすべての割引価格について、同じサービスに対する他の料金と比較されます。繰り返しになりますが、数式自体はありません。Excelシートを使用して任意に計算しました。

さらに、(「割引」と「比較」の範囲内で)単純な減算を実行して、「節約」(計算された価格-割引価格=節約)と「差」(他の弁護士の料金-割引価格=差)を表示したいと思います。 )。上記の2つの値が機能するようになると、これらの追加の2つは単純になると思います。

これが私の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;
    }
}

このようにすると、3つの戻り値すべてが1つのオブジェクトにパッケージ化され、その後返されます。メソッドを呼び出すたびに、新しい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 に答える