2017-11-14 1 views
1

私はタイプがstringbuild出ているパラメータ機能するように変数をstringbuildを渡すが、コンパイラ電話私StringBuilderで出力パラメータを使用するには?

public void FuncOutParamString(out StringBuilder sbValue) 
    { 
     sbValue.Append("wold!"); 
    } 

    private void btnOutParam_Click(object sender, RoutedEventArgs e) 
    { 
     Console.WriteLine("=================== Out Parameter ==================="); 
     // Declare a variable but don't assign a value to it ****************************** 
     int y = 0; 

     // Pass it in as an output parameter, even though its value is unassigned 
     FuncOutParamInt(out y); 

     // It's now assigned a value, so we can write it out: 
     Console.WriteLine(y); 

     // Declare a variable but don't assign a value to it ****************************** 
     StringBuilder sb = new StringBuilder(); 
     sb.Append("Hello "); 
     FuncOutParamString(out sb); 

     Console.WriteLine(sb); 
    } 

を「休暇関数の前に、あなたはsbValueに値を割り当てる必要があります」申し訳ありませんが、私は10の評判が必要画像を投稿する

+0

画像を最初に投稿する必要はなく、代わりにコードを投稿する必要があります。 –

答えて

1

[out]は作成することを意味します。 [class]は参照型です。

public void FuncOutParamString(StringBuilder sbValue) 
{ 
    sbValue.Append("wold!"); 
} 

public void FuncOutParamStringRef(ref StringBuilder sbValue) 
{ 
    //if(...) 
     sbValue = new StringBuilder(); 
} 

public void FuncOutParamStringOut(out StringBuilder sbValue) 
{ 
    sbValue = new StringBuilder(); 
} 
0

変数sbをStringBuilderとして宣言するときは、値をコンストラクタに渡す必要があります。それ以外の場合はnullとして初期化されます。ヒープからメモリを割り当てる必要があるので、後でappendを使うためのパラメータが必要です。

hereは、StringBuilderクラスがサポートするコンストラクタパラメータのタイプを確認できます。

これは動作するはずです:

public void FuncOutParamString(StringBuilder sbValue) 
{ 
    sbValue.Append("wold!"); 
    return sbValue; 
} 

private void btnOutParam_Click(object sender, RoutedEventArgs e) 
{ 
    Console.WriteLine("=================== Out Parameter ==================="); 
    // Declare a variable but don't assign a value to it ****************************** 
    int y = 0; 

    // Pass it in as an output parameter, even though its value is unassigned 
    FuncOutParamInt(out y); 

    // It's now assigned a value, so we can write it out: 
    Console.WriteLine(y); 

    // Declare a variable but don't assign a value to it ****************************** 
    StringBuilder sb = new StringBuilder(50); 
    sb.Append("Hello "); 
    sb = FuncOutParamString(sb); 

    Console.WriteLine(sb); 
} 

また、あなたはFuncOutParamString関数からsbValue変数を返す必要があります。

関連する問題