2012-03-09 17 views
1

入力ファイルを読み取った後に文字列errMsgを出力しました。ref型、StringBuilder

Streamwriter swpt = new Streamwriter(....); 
private void PrintErrorMessage(bool success, string errTitle, string errMsg) 
{ 
    if (!success) 
    { 
     swRpt.WriteLine(errTitle + errMsg); 
    } 
} 

は、質問はこれです::代わりに一人ひとりにStringBuilderを追加すると、それはここで私は、エラーを印刷する方法ですPrintErrorMessage(string)

//Validations 
//First Validation: checks the value of input string realization. 
success = Numerical.Check("Realizations", inputs.realizations.ToString(), out ltester, out errMsg); 
sb.AppendLine(errMsg); 

//Second Validation: checks the value of the input string diameter. 
success = Numerical.Check("Pipe Outside Diameter", inputs.pipeOD.ToString(), out dtester, out errMsg); 
sb.AppendLine(errMsg); 
if (!success) 
{ 
    PrintErrorMessage(success, errTitle, sb.ToString()); 
} 

メソッドを呼び出しsuccess==false場合は検証が行われた後、検証のたびにステップを実行して、ref型を使用してPrintErrorMessage関数に渡して追加することはできますか?

+0

「StringBuilder」はここでは悪い選択かもしれません。どのくらいの文字列ですか?このコードはタイトなループで呼び出されていますか?これが問題領域であることを示すパフォーマンス統計がありますか? http://www.yoda.arachsys.com/csharp/stringbuilder.html – asawyer

+0

はい、オブジェクトであるため、デフォルトで参照渡しされます。 –

+0

2番目のテストで最初の(成功)結果が破棄されるため、これは擬似コードに過ぎません。しかし、このコンテキストから、私はStringBuilderを使用して少し過剰だと言うでしょう – Steve

答えて

5

Instead of appending the stringbuilder at each an everystep after each validation, can I use a ref type and pass it in the PrintErrorMessage function and append it there

あなたはrefずにを渡すことができますし、それに追加します。 StringBuilderはリファレンスタイプ

+0

あなたはどのように教えてもらえますか?検証のたびにPrintErrorMessageを呼び出す必要がありますか?私はすべてのバリデーションが完了した後にそれを呼び出すことを好む – user575219

3

'ref'型のパラメータも宣言する必要はありません。それはStringBuilder自体が参照型なので、refで自動的に渡されます。

+0

あなたはどのように教えてくれる?検証のたびにPrintErrorMessageを呼び出す必要がありますか?私はすべてのバリデーションが完了した後にそれを呼び出すことを好む – user575219