2017-04-18 34 views
0

從以下link有一個例子在我已經在vb.net重新創建的頁面的底部。設置語句,如果錯誤返回空字符串

以下函數運行之前,我從一個文本文件中的一些數據保存到一個名爲T.

例如詞典:

名稱 - T0962

價值 - 5.89

Public Shared Function initialization() 

    'Variables initialization 
    Dim parts As New List(Of Intialization) 

    'Add parts to the list. 
    parts.Add(New Intialization() With { 
     .PartName = "T0962", 
     .PartId = T.Item(.PartName)) 
    }) 

    If parts.Exists(Function(p) p.PartName = "T0962") Then 
      Dim value = parts.Where(Function(p) p.PartName = variable_type).FirstOrDefault() 
      Msgbox(value.PartId) 
    End If 

End Function 

該程序完美工作,當我有「T0962」變量。當這個變量不存在於文本文件中時,它在字典中也不存在。因此,我在代碼中出現錯誤,因爲.PartId無法初始化。這是因爲在那個文本文件中有時我有這個值,有時候我沒有。

後,我已經仔細analized我已經注意到,在Property語句中出現錯誤,在集(值作爲字符串)更加準確。

Public Property PartId() As String 
    Get 
     Return m_PartId 
    End Get 
'here the error happens 
    Set(value As String) 
     m_PartId = value 
    End Set 
End Property 

有沒有辦法在Set語句中避免這種情況?例如,當出現錯誤時,返回一個空字符串?

請讓我知道,如果有什麼你不明白。

+0

這是什麼'T.Item(.PartName))'這裏該零件名稱,你都提到了呢?這是什麼'T.Item(.PartName問題 –

+0

)'如果變量不存在平等?你可以做一些像'.PartId = If(T.Item(.PartName)= Nothing,「」,T.Item(.PartName))' – Bugs

回答

0

好的。嘗試下面。這個對我有用。

Dim partName As String 

partName = "T0962" 
parts.Add(New Intialization() With { 
    .PartName = partName, 
    .PartId = T.FirstOrDefault(Function(f) f.Key = partName).Value 
    }) 
+0

我以前試過但沒有成功。似乎錯誤發生在Set(value As String)的第一行。甚至不嘗試。 –

+0

@RobertKodra,在我的答案中增加了另一段代碼。可能它會解決你的問題。 –

+0

這跟以前一樣。仍然錯誤仍然存​​在。不知何故,當值不被添加到字典時,應該有一種方法來返回一個空字符串。 –