【问题标题】:Converting a type to its nullable equivalent将类型转换为其可为空的等价物
【发布时间】:2013-02-05 15:47:14
【问题描述】:

我有这段代码

 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 不能与可空类型一起正常工作。所以我先创建一个不可为空的。

如何将rule.Data 中包含的字符串转换为type

【问题讨论】:

  • 你的问题很不清楚。您是否在问如何将 string 转换为 decimal?
  • 你能删除变量吗?这将使所涉及的类型更加明显。
  • 我不知道类型,它都是通用的,没有一个 vars(我改变了)会有所帮助。在这种情况下,type 恰好是 decimal?rule.Data 是一个字符串。

标签: c# type-conversion nullable


【解决方案1】:

你不能。

当一个可空结构被装箱在Object 中时,它不会存储一个装箱的可空结构。如果结构没有值,它只会装箱null,如果它有值,它将装箱可空结构的基础值。

你不需要装箱才能做到这一点。

【讨论】:

  • 我不需要将它存储为对象,我需要将rule.Data 转换为type(这是一个 Nullable 类型)。我不太在乎我如何管理它。
  • @CaffGeek 好吧,你将它传递给Expression.Constant,它接受一个对象,所以无论你做什么,它都会在那时被装箱。
  • 看来我的问题是别的。你是对的,即使它是 decimal? 我的代码稍后仍然会失败,并出现与 decimal 相同的错误。
猜你喜欢
  • 2020-06-26
  • 2016-04-29
  • 2015-06-17
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-05-23
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多