在我的monodroid应用程序中,我需要将CLLocation对象分配给null值。我需要它来检测一些特定的条件。例如假设一个函数对CLLocationCoordinate2D对象执行某些操作,并且我们希望if和exeption在此函数中返回null.But monotouch不允许此类型的null值。
这是我用于此建议的测试方法:
private static CLLocationCoordinate2D sampleMethod ()
{
try {
return new CLLocationCoordinate2D ();
} catch (Exception ex) {
return null;
}
}
和错误一致:
Error CS0037: Cannot convert null to `MonoTouch.CoreLocation.CLLocationCoordinate2D' because it is a value type (CS0037) (Realtyna_iPhone_Project)
在这种情况下我们该怎么做?
答案 0 :(得分:2)
CLLocationCooredinate2D是一个值类型,不能为null。但是,C#允许您将值类型包装在Nullable包装器中,以便它们可以包含空值。
例如,这应该是有效的:
private CLLocationCoordinate2D? ProcessLocation ()
{
CLLocationCoordinate2D? retLoc;
try {
// do something with retLoc here
} catch (Exception ex) {
retLoc = null;
}
return retLoc;
}