在 VB 中,我对DirectCast
值类型 ( double
, int
, ...) 有不同的行为,具体取决于间接数
DirectCast(nothing, Double)
return 0
但是,如果我尝试将诸如矩阵元素等于无的东西强制转换,则会出现异常
Dim pArray as Object() = { nothing, 1.5, 2.27, -3.0}
DirectCast(pArray(1), Double) 'work with no issue
DirectCast(pArray(0), Double) 'Exception : Cannot convert to double
以同样的方式:
Dim TestCasting as object = nothing
Directcast(TestCasting, double) 'Exception : Cannot convert to double
我怎样才能使工作方式与工作方式DirectCast
相同?pArray(0)
DirectCast(nothing, double)
我的帖子是一个突出问题的示例,而无需担心其余代码。
要激动。这是一个可能引起一些问题的例子。让我们看一个随机表(没有主键或任何东西,但没关系):
TABLE [dbo].[IDENTIFICATION] (
[USER_ID] INT IDENTITY (1, 1) NOT NULL,
[PASSWORD] NVARCHAR(50) NULL,
[EXPIRATION_D] DATETIME NOT NULL,
[LAYOUT] INT NULL,
);
现在,我有一个返回 Object(,) 的方法
Dim pArray as Object(,) = myconnection.GetSqlRequest("Select USER_ID, PASSWORD, EXPIRATION_D, LAYOUT from IDENTIFICATION where USER_ID = 3")
这可能会返回类似的内容,{ 3, "StackOverflow", New Date(2110,01,01), nothing}
因为布局是一个可选字段。
我可以这样做:
if pArray(0,3) is nothing then
Layout = 0
Else
Layout = DirectCast(pArray(0,3), Double)
End if
但我的目标是做:
Layout = DirectCast(pArray(0,3))
主要是因为我正在重构我没有编写的代码的很大一部分,而且DirectCast(nothing, Double) return 0
除了这种情况外,它让我感到困扰。