2017-09-12 11 views
-1

この関数は理論的には文字列( "join")を返しますが、 "return join;"ここuse of unassigned local variable "join".は私のコードです::私はそのエラーのいずれかの理由が原因であると表示されていない関数は私に文字列を返させません

public string function(string input) 
{ 
    string join; 
    var token = input.Split('.').Select(p => Regex.Split(p, " ")).ToArray(); 
    for (int i = 0; i <= token.Length; i++) 
    { 
     join = string.Join(" ", token[i]); 
    } 
    return join; 
} 

それは言って私にエラーを与えます!

+3

'string join =" "; –

+1

' token'はnullなので、 'join'は決して値を割り当てられません。あなたのLINQが何らかの形で間違っていると思います。 – Equalsk

+0

ループ本体が少なくとも1回は実行されることをどのように知っていますか? –

答えて

2

が参加し、それがtoken.Lengthが0であれば何が起こるかを意味?結合は決して割り当てられません。変数を初期化する必要があります:string joing = ""; 良い一日を!

0

string変数joinを初期値なしで宣言しています。例えば、正規表現がトークンを生成しない場合、配列tokenは空であり、ループはスキップされます。forjoin変数の値は決して設定されません。

この条件がメソッドの仕様に基づいて不可能であることがわかっても、コンパイラはそれを必ずしも認識しないため、変数を宣言する必要があるコンパイラエラーが発生します。

このエラー周りの簡単な方法NULLに値または空の文字列を設定することです:のみ「のための」内部で割り当てられている

string join = null; // or "" 
+0

私のdownvoteではない、答えは正しいようですか? – CodeCaster

関連する問題