从缓存的对象投射ValueTuple

Chr*_*uer 4 c# valuetuple

当我检查缓存以查看ValueTuple是否在缓存中时,我使用下面的代码。在这种情况下,返回的值将为空(高速缓存中不存在)。代码运行时object not set to instance of an object,在第一行出现错误。是否有将对象强制转换为ValueTuple的正确方法?

var geo = ((double, double))CacheEngine.Get(key);
if (!geo.Equals(default(ValueTuple<double, double>))) return geo;
Run Code Online (Sandbox Code Playgroud)

Chr*_*uer 8

我发现我需要这样做才能正常工作。您需要强制转换为ValueTuple<double, double>而不是(double,double)。

var geo = CacheEngine.Get(key);
if (geo != null)
{
    var geoTuple = (ValueTuple<double, double>)geo;
    if (!geoTuple.Equals(default(ValueTuple<double, double>)))
    return geoTuple;
}
Run Code Online (Sandbox Code Playgroud)