2017-04-13 8 views
0

私は156文字のメッセージを受け取るc#winforms .net 4アプリケーションを持っていますが、このメッセージを変更せずに複数の関数に順番に渡します。156文字列を複数の関数に渡す

私の質問は、パラメータと同じ値を渡し続けるのが効率的でないか、より効率的な方法ですか?

ので、現在私が持っている:コードの

string code = getTheCode(); 
\\decode first part 
string result1 = getResult1(code); 
string result2 = getResult2(code); 
... 

値は、その初期割り当て後に変更することはありません。

+2

文字列は不変なので、決して変更されません。それらは参照クラスでもあります。そのため、同じ変数をパラメータとして複数回使用するとコピーは必要ありません。最後に、156文字が*小*文字列 –

+0

文字列はコピーされないので、効率的です。基本的にはポインタを渡しています。 – dasblinkenlight

答えて

1

答えはノーです。同じ文字列をパラメータとして渡し続けるのは非効率的ではありません。文字列への参照を渡すだけなので、非常に効率的です。

-1

同じコードをいくつかのメソッドに渡し続けるのは非効率的な場合があります。これを何度もやらなくてはならない場合は、「結果を得る」責任のあるクラスを作成することができます。この新しいクラスのコンストラクタで 'code'を渡します。この方法でクラスの生存期間中に 'コード'を再利用することができ、パラメータと同じ値を渡す必要はありません

+0

'code'は*文字列*です。複数の関数呼び出しで同じ文字列値を使用することが非効率的なのはなぜですか?そして、文字列の上に*別のクラスを導入することはどのように役立つでしょうか? –

+0

私は、あなたが引数として同じ文字列を必要とする多くのメソッドを持っているなら、おそらく結果を得る責任があるクラスが欲しいと言っています。もちろん、文字列をいくつかの関数に渡すことができます。しかし、同じ文字列を多くの関数に渡すと、あまりにも多くの責任を持つクラスを作成しているように思えます。 –

0

引数として文字列を渡す必要のあるコンストラクタを使用してクラスを作成できますプライベートプロパティとして設定します。次に、このプライベートプロパティを使用して結果を計算するメソッドを使用してデータを取得できます。

しかし、これはあなたが好むコーディングスタイル(もちろん、1つ以上の場所でこれらのメソッドを使用するかどうか)の問題です。私にとっては読みやすく、ResultGetterクラスのインスタンスでコード変数が変更されないようにする必要があります。

public class ResultGetter 
{ 
    private readonly string _code; 

    public ResultGetter(string code) 
    { 
     _code = code; 
    } 

    public string GetResult1() 
    { 
     var returnValue = // do something with _code property  
     return returnValue; 
    } 

    public string GetResult2() 
    { 
     var returnValue = // do something with _code property 
     return returnValue; 
    } 

    // et cetera ad nauseam 
} 

そしてメインのファイルに:

var code = getTheCode(); 
var rg = new ResultGetter(code); 
string result1 = rg.GetResult1(); 
string result2 = rg.GetResult2(); 
+0

これはもっと冗長ではなく、元のものとどのように違うでしょうか?フィールドアクセスまたはパラメータアクセス、それは同じです。文字列は参照クラスです。渡されるのはポインタだけです。しかし、文字列の上に別のクラスを追加すると、1つではなくGCに2つの*オブジェクトがあります。 –

+0

私はそれを見て、より冗長で読みやすく、それはコーディングの好みの問題です。それは確かにOPの方法と私が望むものの代替です。 OPが使用するよりも効率的です。 – schroedingersKat

関連する問題