C# 将类型转换为其可为空的等效类型
我有这段代码C# 将类型转换为其可为空的等效类型,c#,type-conversion,nullable,C#,Type Conversion,Nullable,我有这段代码 NullableConverter nullableConverter = new NullableConverter(type); Type baseType = nullableConverter.UnderlyingType; Object value = Convert.ChangeType(rule.Data, baseType); constant = Expression.Constant(value); 在这种情况下,类型是decimal?,但它可以是任何
NullableConverter nullableConverter = new NullableConverter(type);
Type baseType = nullableConverter.UnderlyingType;
Object value = Convert.ChangeType(rule.Data, baseType);
constant = Expression.Constant(value);
在这种情况下,类型是decimal?
,但它可以是任何可为空的类型
我需要value
类型为decimal?
,而不是当前的decimal
。问题是,Convert.ChangeType
不能正确处理可为空的类型。所以我先创建一个不可为null的
如何将rule.Data
中包含的字符串转换为type
?您不能
当可空结构被装箱到对象中时,它不会存储装箱的可空结构。如果结构没有值,它将只框选可空结构的基础值
你不需要把它装箱,这样就可以了。你的问题很不清楚。您是否在询问如何将字符串
转换为十进制数?
?能否删除变量?这将使涉及的类型更加明显。我不知道类型,它都是泛型的,没有一个变量(我更改了)会有帮助。在这种情况下,type
恰好是decimal?
,rule.Data
是一个字符串。我不需要将它存储为对象,我需要将rule.Data
转换为type
(可为空的类型)。我不太在乎如何管理它。@CaffGeek好吧,您正在将它传递给Expression.Constant
,它接受一个对象,因此无论您做什么,它都将在此时被装箱。看来我的问题是其他问题。你说得对,即使是十进制数?
我的代码稍后仍会失败,错误与十进制数时相同