간접의 수에 따라 다른 행동은, 내가 다른 DirectCast와 행동과 값 형식으로 캐스팅 (더블, INT, ...) 간접의 수에 따라이: VB에서
DirectCast(nothing, Double)
반환 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
pArray (0)의 다이 캐스트는 DirectCast (더블, 아무것도 아님)와 동일한 방식으로 작동하도록하려면 어떻게해야합니까?
편집 : 내 포스트 코드의 나머지 부분에 대한 우려없이 문제를 강조하는 예이다.
스릴 있습니다. 다음은 몇 가지 문제를 제기 할 수있는 예입니다. 의는 (신경 끄시 고하지만 기본 키 또는 무엇이든) 임의의 테이블을 보자 :
TABLE [dbo].[IDENTIFICATION] (
[USER_ID] INT IDENTITY (1, 1) NOT NULL,
[PASSWORD] NVARCHAR(50) NULL,
[EXPIRATION_D] DATETIME NOT NULL,
[LAYOUT] INT NULL,
);
를 자, 내가 (,)를 Objec를 반환하는 방법을
Dim pArray as Object(,) = myconnection.GetSqlRequest("Select USER_ID, PASSWORD, EXPIRATION_D, LAYOUT from IDENTIFICATION where USER_ID = 3")
이 같은 {3을 반환 할 수 있습니다, "StackOverflow", 새 날짜 (2110,01,01), 아무 것도 없음) 레이아웃은 선택 필드입니다.
내가 같은 수행 할 수 있습니다
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)가 0을 반환한다는 버그가 있기 때문입니다.
http://www.codeproject.com/Articles/18320/DirectCast-Vs-CType – ScottE