有没有办法这样做呢?
Dim valueNothing = ConvertHelper.SafeChangeType(Of Boolean)(Nothing)
Dim valueTrue = ConvertHelper.SafeChangeType(Of Boolean)(True)
Dim valueFalse = ConvertHelper.SafeChangeType(Of Boolean)(False)
' ...
Class ConvertHelper
Shared Function SafeChangeType(Of T As Structure)(ByVal value As Object) As T?
Return If(value Is Nothing, Nothing, DirectCast(Convert.ChangeType(value, GetType(T)), T?))
End Function
End Class
为什么它抛出一个异常?
由于Convert.ChangeType
方法implementation:
if(value == null) {
if(conversionType.IsValueType) {
throw new InvalidCastException(Environment.GetResourceString("InvalidCast_CannotCastNullToValueType"));
}
return null;
}
http://stackoverflow.com/questions/3531318/convert-changetype-fails-on-nullable-types – Eric
有什么用'没有在_simply_问题'直接在'Dim b As Boolean? =没有'? – Sehnsucht
@Sehnsucht它是一个代码片段。在我的项目中,它可以是每种类型,不仅是'布尔?'。 – user2190035