2016-07-24 4 views
0

フォーラムで見つけたスニペットでこのエラーが発生するのは初めてですが、その理由を理解できません。また、私はまだC# noobです。arr.Max(x => x.Length)のC#NullPointerException

arr.Max(x => x.Length)のようなものを試すと、xのNPEがx.Lengthに表示されます。私が渡しているparam変数で何かが間違っている必要があります。なぜなら、実行時にこのエラーが発生するからです。

private string[,] jaggedTo2D(string[][] arr) 
{ 
    string[,] arr2 = new string[arr.Length, arr.Max(x => x.Length)]; 
    for (var i = 0; i < arr.Length; i++) 
    { 
     for (var j = 0; j < arr[i].Length; j++) 
     { 
      arr2[i, j] = arr[i][j]; 
     } 
    } 

    return arr2; 
} 
+0

'arr'要素のいずれかがnullですか? – shahkalpesh

+1

スニペットには通常エラーチェックが含まれていません。どうやら変数 'arr'は' null'ではありませんが、(jagged配列は配列の配列です)いくつかの要素があります。 –

+0

この質問は、http://stackoverflow.com/questions/4660142/what-is-a-nullreferenceexception-and-how-do-i-fix-itの重複を考慮する必要はありません。これはnull参照例外についてのものですが、これはLinq関数内のnull参照例外に関するものです.Lineq関数の中には、それ自身のいくつかの考慮事項があります。 –

答えて

1

は、次のことを試してください。

private string[,] jaggedTo2D(string[][] arr) { 
     string[,] arr2 = new string[arr.Length, arr.Max(x => null != x ? x.Length : 0)]; 
     for (var i = 0; i < arr.Length; i++) { 
      for (var j = 0; j < arr[i].Length; j++) { 
       arr2[i, j] = arr[i][j]; 
      } 
     } 

     return arr2; 
    } 

私はnull要素のチェックを追加しました。

関連する問題