Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/317.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 将类型转换为其可为空的等效类型_C#_Type Conversion_Nullable - Fatal编程技术网

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
,它接受一个对象,因此无论您做什么,它都将在此时被装箱。看来我的问题是其他问题。你说得对,即使是
十进制数?
我的代码稍后仍会失败,错误与
十进制数时相同