2011-09-21 47 views
1

我開發C#中使用ASP.NET應用程序的一個實例,我打了以下錯誤:未設置爲一個對象的實例錯誤:未將對象引用設置到對象

對象引用。

描述:執行當前Web請求期間發生未處理的異常。請查看堆棧跟蹤以獲取有關該錯誤的更多信息以及源代碼的位置。

異常詳細信息:System.NullReferenceException:未將對象引用設置爲對象的實例。

,這是我的代碼片段:

Match matchNew = Regex.Match(parts[0].ToString(), @"([0]\.\d*)|[1]\.[0]$", RegexOptions.IgnoreCase); 

這是在我的本地測試代碼是完全正常,但是當移動相同的代碼到我的虛擬環境,它擊中了這個錯誤。

我猜也許這是因爲我在虛擬環境中的點網框架。

請高人幫忙,謝謝。

+3

我更傾向於認爲您的代碼存在問題。 – ChaosPandion

+0

零件[0]爲空。 – Scott

+0

或零件爲空。 – phoog

回答

0

這個替換代碼:

if(parts != null && parts.Length>0) 
{  

    if(parts[0] != null) 
    { 
     Match matchNew = Regex.Match(parts[0].ToString(), @"([0]\.\d*)|[1]\.[0]$", RegexOptions.IgnoreCase); 
    } 
} 

,它會正常工作。數組parts在您的情況下似乎爲null。但理想情況下,您還應該檢查數組是否包含元素,並且在嘗試將其轉換爲字符串值之前,該元素是否爲空。

3

最有可能parts[0]爲空。這個錯誤等同於Java中的NullPointerException。

嘗試上一行的局部變量設置爲parts[0].ToString();,並查看是否異常是從該行拋出來代替。

if(parts[0] != null){ 
    Match matchNew = Regex.Match(parts[0].ToString(), @"([0]\.\d*)|[1]\.[0]$", RegexOptions.IgnoreCase); 
} 
2

最有可能是你的陣列「零件」,如果它的長度爲0,那麼它將會失敗:

,如果你有什麼要執行它,我建議只執行你的對手。確保首先測試它的長度。

2

從你得到的例外,它看起來像要麼partsparts[0]爲空。或者考慮爲零件引入一個變量,以確定零件是否爲空,如果是,則使用默認值處理,或向用戶顯示錯誤,或者在適當的情況下拋出異常。

object part = parts[0]; 
if (part == null) 
{ 
    // part is null, either handle with default value or error. 
} 

Match matchNew = ...; 
0

看來你的陣列"parts"沒有任何元素,因此parts[0]爲空,異常的發生是由於.ToString()因爲空不能轉換爲字符串。

+0

這將是一個數組索引綁定錯誤。 – recursive

相關問題