首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >转换为System.Drawing.Color?

转换为System.Drawing.Color?
EN

Stack Overflow用户
提问于 2012-01-13 17:21:38
回答 6查看 2.5K关注 0票数 0

当我想将一个对象强制转换为System.Drawing.Color (使用as)时,我在编译时得到了以下错误:

代码语言:javascript
复制
The as operator must be used with a reference type or nullable type ('System.Drawing.Color' is a non-nullable value type)

我能做些什么?

我的代码如下:

代码语言:javascript
复制
MyClass.indoorColor = parsedObject as System.Drawing.Color;
EN

回答 6

Stack Overflow用户

回答已采纳

发布于 2012-01-13 17:29:01

System.Drawing.Color是一个结构,不能使用'as‘关键字从引用类型转换为值类型。

尝试使用“From..”中的一个。通过传递参数从System.Drawing.Color获取方法:

http://msdn.microsoft.com/en-us/library/system.drawing.color_methods.aspx

票数 3
EN

Stack Overflow用户

发布于 2012-01-13 17:27:30

只能将as用于具有引用类型的强制转换。System.Drawing.Color是一个结构,您必须像这样转换它:

代码语言:javascript
复制
MyClass.indoorColor = (System.Drawing.Color)parsedObject;

更新:

只需详细说明:不能将as用于值类型(而结构是值类型)的原因是,如果您尝试强制转换的变量与正在执行的强制转换不兼容,则as将导致null。由于值类型不能为null,因此这是不允许的。

正如vc 74所建议的,一种选择是使indoorColor可为空(Color?),或者您可以在尝试强制转换之前检查parsedObject的类型是否正确。

票数 0
EN

Stack Overflow用户

发布于 2012-01-13 17:28:33

As运算符只能与reference type一起使用。对于其他对象,您必须使用直接转换。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/8848280

复制
相关文章

相似问题

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