当我想将一个对象强制转换为System.Drawing.Color (使用as)时,我在编译时得到了以下错误:
The as operator must be used with a reference type or nullable type ('System.Drawing.Color' is a non-nullable value type)我能做些什么?
我的代码如下:
MyClass.indoorColor = parsedObject as System.Drawing.Color;发布于 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
发布于 2012-01-13 17:27:30
只能将as用于具有引用类型的强制转换。System.Drawing.Color是一个结构,您必须像这样转换它:
MyClass.indoorColor = (System.Drawing.Color)parsedObject;更新:
只需详细说明:不能将as用于值类型(而结构是值类型)的原因是,如果您尝试强制转换的变量与正在执行的强制转换不兼容,则as将导致null。由于值类型不能为null,因此这是不允许的。
正如vc 74所建议的,一种选择是使indoorColor可为空(Color?),或者您可以在尝试强制转换之前检查parsedObject的类型是否正确。
发布于 2012-01-13 17:28:33
As运算符只能与reference type一起使用。对于其他对象,您必须使用直接转换。
https://stackoverflow.com/questions/8848280
复制相似问题