如何将对象转换为类型struct的可空类?

时间:2009-05-20 10:45:00

标签: vb.net casting

在我正在使用的代码库中有一个具有签名

的方法
Public Sub SetDropDownValue(Of T As Structure)(ByVal target As ListControl, ByVal value As Nullable(Of T))

我写的方法是传递一个object类型的参数。

如何将对象转换为可以传递到SetDropDownValue方法的内容?

2 个答案:

答案 0 :(得分:0)

不,您将无法将引用类型转换为值类型(这是Structure约束所表示的内容)。 CLR确实允许您将值类型转换为引用类型(这称为 boxing )但是这两种不同类型的实现(和语义)之间的区别的性质使得反向不可能

你唯一能想到的就是创建一个值类型,它将对象作为一个字段引用,但也许这个问题可能暗示你是以错误的方式处理整个事情。

答案 1 :(得分:0)

如果你知道T

,这应该有效
something.SetDropDownValue(target, DirectCast(value, Nullable(Of T)))

有关详细信息,请参阅此article

如果你不知道类型T,你就会遇到麻烦,并且必须在运行时开始反思。这很复杂,很危险,而且性能很差。