2

在我的 monodroid 应用程序中,我需要将 CLLocation 对象分配给 null 值。我需要它来检测一些特定的条件。例如,假设一个对 CLLocationCoordinate2D 对象执行某些操作的函数,我们希望该函数的 if 和 exeption 返回 null。但 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)

在这种状态下我们应该怎么做?

4

1 回答 1

2

CLLocationCoordinate2D 是值类型,不能为空。但是,C# 允许您将值类型包装在Nullable包装器中,以便它们可以包含空值。

例如,这应该是有效的:

private CLLocationCoordinate2D? ProcessLocation ()
{
    CLLocationCoordinate2D? retLoc;

    try {
        // do something with retLoc here
    } catch (Exception ex) {
        retLoc = null;
    }

    return retLoc;
}
于 2013-02-11T01:12:06.450 回答