[英]How can I pass args that are sometimes null?
在此事件处理程序中:
public static void geolocator_PositionChanged(Geolocator sender, PositionChangedEventArgs args)
{
DateTimeOffset timeStampUTC = args.Position.Coordinate.Timestamp.ToUniversalTime();
DateTimeOffset timeStampLocal = timeStampUTC.LocalDateTime;
DateTimeOffset dateTimeStampUTC = timeStampUTC.DateTime;
RecordLocation(args.Position.Coordinate.Latitude, args.Position.Coordinate.Longitude,
args.Position.CivicAddress.City, args.Position.CivicAddress.State, dateTimeStampUTC, timeStampLocal);
}
...我收到一个Null Reference Exception
因为args.Position.CivicAddress
为null
(传递给RecordLocation()
的其余args有效)。 我估计有时候Position将为null
,有时不会。 我该怎么做才能让没有发现任何城市或州的时间畅通无阻? 我试图使RecordLocation()
的定义中的那些字符串可为空,但是无法编译。
我是否需要检查CivicAddress是否为null并创建RecordLocation()
方法的重载版本,还是有其他方法来处理此问题?
我该怎么做才能让没有发现任何城市或州的时间畅通无阻?
您只需要检查它。 例如:
if (args.Position != null && args.Position.CivicAddress != null)
{
// Now you can use args.Position.CivicAddress.State safely
}
如果您想使用args.Position
做很多事情, args.Position
很可能需要一个“外部” if语句-很有可能使用局部变量来简化事情:
var position = args.Position;
if (position != null)
{
if (position.CivicAddress != null)
{
// Use properties of position.CivicAddress
}
// Assuming Coordinate is nullable to start with, of course...
if (position.Coordinate != null)
{
// ...
}
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.