gpt4 book ai didi

vb.net - 将对象转换为具有可为空日期的 Object()

转载 作者:行者123 更新时间:2023-12-02 11:46:08 25 4
gpt4 key购买 nike

我目前正在与旧的 api 作斗争,并且面临以下问题:当我尝试将对象转换为对象数组(当值是可为空的日期时)时,我会遇到运行时异常。

Module Module1
Sub Main()
Console.WriteLine(Misc.dateCast(New Nullable(Of DateTime)()))
Console.WriteLine(Misc.tabledateCast(New Nullable(Of DateTime)() {New DateTime()}))
End Sub
End Module

Module Misc
Function dateCast(ByVal val As Nullable(Of DateTime)) As Object
Return CType(val, Object)
End Function

Function tabledateCast(ByVal val As Object) As Object()
Return CType(val, IEnumerable(Of Object)).Cast(Of Object).ToArray
End Function
End Module

第一个 Actor 可以工作,但第二个不行。如何成功转换为对象数组?

我无法使用CType(val, IEnumerable(Of Nullable(Of DateTime))),因为该函数可能会获取其他类型的数组。

最佳答案

看起来您有两个选择:

1) 如果数组本身是类型安全的,您可以泛化该方法,以便它知道在转换为对象之前要转换为什么 - 这不是最好看的代码,尤其是在 VB.NET 中:

Module Module1
Sub Main()
Console.WriteLine(Misc.tabledateCast(Of Nullable(Of DateTime))(New Nullable(Of DateTime)() {New DateTime()}))
End Sub
End Module

Module Misc
Function tabledateCast(Of T)(ByVal val As Object) As Object()
Return CType(val, IEnumerable(Of T)).Cast(Of Object).ToArray
End Function
End Module

2)Laoujin 的链接,您首先在其中执行非泛型 IEnumerable 转换:

Module Module1
Sub Main()
Console.WriteLine(Misc.tabledateCast(New Nullable(Of DateTime)() {New DateTime()}))
End Sub
End Module

Module Misc
Function tabledateCast(ByVal val As Object) As Object()
Return CType(val, IEnumerable).Cast(Of Object).ToArray
End Function
End Module

关于vb.net - 将对象转换为具有可为空日期的 Object(),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12427329/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com