首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >无法ChangeType从字符串到int?

无法ChangeType从字符串到int?
EN

Stack Overflow用户
提问于 2016-11-13 01:48:13
回答 2查看 2.9K关注 0票数 2

在我们的应用程序的深度中,有人试图使用Convert.ChangeType(value, castType)执行从字符串到可空int的转换。在这种情况下,值如下:

代码语言:javascript
复制
value: "00010"
castType: Nullable<System.Int16>

问题是我收到了以下错误

代码语言:javascript
复制
Invalid cast from 'System.String' to 'System.Nullable`1[[System.Int16}

我(显然是错误的)认为这类似于cast或Convert.ToInt16(),但是通过测试以下两行代码,我已经证实了这是不一样的。

代码语言:javascript
复制
Int16 t = Convert.ToInt16("00010");
object w = Convert.ChangeType("00010", typeof(short?));

正如您可能怀疑的,第一个成功,而第二个失败与上面的错误消息。

是否可以通过调整来以这种方式使用ChangeType,还是应该考虑重构?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2016-11-13 01:53:07

你需要写这样的东西:

代码语言:javascript
复制
var value = "00010";
short? w = value == null ? null : (short?)Convert.ChangeType("00010", typeof(short));

ChangeType将不适用于Nullable<T> -如果我们有value的值,我们假设我们有一个转换类型的值。

票数 2
EN

Stack Overflow用户

发布于 2016-11-13 01:52:26

根据Convert.ChangeType

ChangeType(Object, Type)方法可以将可空类型转换为另一种类型。但是,不能将另一种类型转换为可空类型的值,即使conversionTypeNullable<T>的基础类型。要执行转换,可以使用强制转换操作符(在C#中)或转换函数(在Visual中)。

所以,试着:

代码语言:javascript
复制
var w = (short?)Convert.ChangeType("00010", typeof(short));
票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/40569702

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档