我正在从存储过程返回结果并将它们传递给函数以进行进一步处理。在某些情况下,其中一个字段(日期值)可能(并且非常好)返回 null。
但是,每当我将 null 传递给函数时,都会引发异常,试图将 null 转换为函数参数的类型。处理这个问题的最佳方法是什么?
数据:
Name StartDate EndDate
Bob 01/01/2013 NULL
调用函数:
MyFunction(
DataRow.Item("StartDate"),
DataRow.Item("EndDate")) ' <--- invalid cast exception
功能:
Public Function MyFunction(
ByVal StartDate as Date,
ByVal EndDate as Date) As Object
....
Return something
End Function
编辑:很多很棒的提示,但仍然没有骰子。
将函数中的 DateTime 类型声明为可为空ByVal EndDate as DateTime?
,会导致System.InvalidCastException: Specified cast is not valid.
使用 DataRow.Field(Of DateTime)("EndDate") 以及将参数声明为可为空的类型会导致System.InvalidCastException: Cannot cast DBNull.Value to type 'System.DateTime'
EDIT2:找到了我的一个问题的根源。我使用的是 Iif(),其中一个值是 System.DBNull 类型,另一个是 Date 类型。并且真假部分必须是同一类型。我花了一段时间才发现这一点。