2016-12-14 21 views
-6

方法は、以下のようになります。条件が満たされない場合に返されるものは?

private static List<string> SetPointObjectDefectRow(string[] row, string owner) 
{ 
    const int zone = 54; 
    const string band = "U"; 

    if (Helpers.NormalizeLocalizedString(row[7]).Contains(@"a") || 
     Helpers.NormalizeLocalizedString(row[12]).Contains(@"b")) 
    { 
     var geoPosition = UtmConverter.StringUtmFormatToLocation(zone, band, Convert.ToDouble(row[15]), Convert.ToDouble(row[14])); 
     var beginGeoPosition = geoPosition.LatString + ", " + geoPosition.LngString; 
     var result = new List<string> 
     { 
      owner, 
      row[4], 
      beginGeoPosition 
     }; 
     return result; 
    } 
} 

それはないすべてのパスが何かを返すことは明らかだと問題は、私はnullを返すことはできませんです。

方法をどのように並べ替えますか?

+4

'return new List ();'? – fubo

+4

無データの状況に対処するにはさまざまな方法があります。たとえば、例外をスローして空のリストを返すことができます。しかし私たちはあなたのシナリオを知らないので、私は意見に基づいて閉じるように投票しています。 – HimBromBeere

+0

問題は、列と行を使用して構造体を作成する必要があることです。構造体には3つの列があります。空のリストまたは空のリストの場合は、列がないため、アプリケーションがクラッシュしています。 – tesicg

答えて

2

リストを初期化できますか?

private static List<string> SetPointObjectDefectRow(string[] row, string owner) 
{ 
    const int zone = 54; 
    const string band = "U"; 
    List<string> result = new List<string>() 
     { 
      owner, 
      string.Empty, 
      string.Empty 
     }; 

    if (Helpers.NormalizeLocalizedString(row[7]).Contains(@"a") || 
     Helpers.NormalizeLocalizedString(row[12]).Contains(@"b")) 
    { 
     var geoPosition = UtmConverter.StringUtmFormatToLocation(zone, band, Convert.ToDouble(row[15]), Convert.ToDouble(row[14])); 
     var beginGeoPosition = geoPosition.LatString + ", " + geoPosition.LngString; 
     result = new List<string> 
     { 
      owner, 
      row[4], 
      beginGeoPosition 
     }; 

    } 

    return result; 
} 

私は別のList<Y>List<X>をtranformする例えば、アセンブラメソッドを作成したいとき、私は通常これを行うので、私は、私はこれを行うことを好むY.の空のリストを返すようにしようと私のList<X>がnullの場合例外をスローしてダッシュボードにエラーが発生するのを防ぎます。しかし、あなたのコードがどのように動作するかによって異なります。

+0

問題は、列と行。構造体には3つの列があります。空のリストまたは空のリストの場合は、列がないため、アプリケーションがクラッシュしています。 – tesicg

+1

@tesicg:メソッドは 'private'なので、正しい入力を提供するのはクラスの(呼び出し元の)責任です。メソッドが 'public' /' protected'だった場合は、 –

+0

ドミトリーの提案が私を助けたと示唆しているように、入力が検証されていました。 – tesicg

関連する問題