MfgRecipeTypeKey = If(placeholderMRTK Is Nothing, 0, placeholderMRTK)
e questo è tutto bene, ma quando in realtà placeholderMRTK è Niente, non riesce, senza sollevare un'eccezione, basta smettere il sub (MyBase.Load per una forma di dialogo) e continuando su con l'applicazione. Quando lo riscrivo come:
If placeholderMRTK Is Nothing Then
MfgRecipeTypeKey = 0
Else
MfgRecipeTypeKey = placeholderMRTK
End If
funziona correttamente. Pensavo che i due fossero equivalenti logici.
Quindi:
1) Qual è la differenza reale tra quei due che io non so?
2) Perché il primo potrebbe fallire? Mi chiedo se si tratti di un problema di typecasting, ma sia placeholderMRTK che MfgRecipeTypeKey sono dichiarati come Byte? (byte nullable) tipi.
3) Perché l'esecuzione è appena caduta dal sottotitolo senza presentarmi un'eccezione. Quando quella linea è evidenziata in Visual Studio (Pro 2013 se è importante) e io f11 per la riga successiva, scatta e avvia un evento di rendering datagrid e poi presenta la mia finestra di dialogo, ma senza alcuni importanti dati che hanno avuto luogo sotto la cappa . E visto che lo fa (è questo nuovo comportamento nel 2013?), Come faccio a essere debugging?
Grazie per il vostro tempo e attenzione!
Se entrambe le variabili sono annullabili invece c'è niente che puoi utilizzare il metodo HasValue, ad esempio: MfgRecipeTypeKey.Value = Se (placeholderMRTK.HasValue, placeholderMRTK.Value, 0) – sblandin
Per quanto riguarda la terza domanda: [VS2010 fa non mostra un messaggio di eccezione non gestito in un'applicazione WinForms su una versione a 64 bit di Windows] (https: // StackOverflow.it/questions/4933958/vs2010-does-not-show-unhandled-exception-message-in-a-winforms-application-on-a/11997142 # 11997142) – sloth
Per scoprire perché la prima affermazione non funziona, suggerisco di eseguire esso (proprio come un test) qualche tempo dopo il completamento del Load Event Handler. In questo modo dovresti essere in grado di vedere l'eccezione. – Blackwood