还有的通过为运营商,这是您使用的是什么的问题明确地投对象直接
MyClass.indoorColor = (System.Drawing.Color)parsedObject;
或安全投法两种方式。如果parsedObject不是安全大小写将返回null的正确类型,则直接强制转换将抛出InvalidCastException。但是,null不是结构的有效值,因此也是错误消息。
对此有两种方法,都涉及到使用可空类型。
甲空类型是一个包装轮结构类型,其允许值设定为另外空并通过任一长格式System.Nullable<System.Drawing.Color>
或短格式仅仅是一个指定?上式结束System.Drawing.Color?
所以要么改变indoorColor你的类型定义为System.Drawing.Color?
,然后做
MyClass.indoorColor = parsedObject as System.Drawing.Color?;
或可替代选择你希望在一个不兼容的类型的情况下,使用默认值(我将在这里使用Transparent)并使用以下语法;
MyClass.indoorColor = parsedObject as System.Drawing.Color? ??
System.Drawing.Color.Transparent;
的??符号表示使用左侧的值,除非它是null
否则使用右侧的值;
parsedObject的类型是什么? – Saleh 2012-01-13 09:26:31
你能描述一下你如何获得'parsedObject',它的类型是什么,你为什么期望它成功地转换成System.Drawing.Color? – GolfWolf 2012-01-13 09:27:24