2016-12-14 69 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

也許你可以初始化你的List?

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<X>到另一個List<Y>,所以如果我List<X>爲null我嘗試返回Y的空List我喜歡做這個而不是拋出異常並讓我的儀表板充滿錯誤。但這取決於你的代碼如何工作。

+0

問題是我應該創建結構列和行。該結構有3列。如果列表爲空或爲空,則應用程序崩潰,因爲沒有列。 – tesicg

+1

@tesicg:該方法是「私人」的,所以課堂(調用者)負責提供正確的輸入。如果該方法是「public」/'protected「,則輸入將按照您的建議進行驗證 –

+0

Dmitry的建議幫助了我。 – tesicg

相關問題