获得“ref"在Double.TryParse中必需的关键字

本文关键字:TryParse 关键字 Double ref quot 获得 | 更新日期: 2023-09-27 18:04:09

我有一个库,代码如下:

double result = -1;
if (!string.IsNullOrEmpty(fieldName))
{
    string value = HttpContext.Current.Request.QueryString[fieldName];
    if (string.IsNullOrEmpty(value))
    {
        value = HttpContext.Current.Request.Form[fieldName];
    }
    if (string.IsNullOrWhiteSpace(value) || !double.TryParse(value.Trim(), out result))
    {
        result = -1;
    }
}
return result;

在我的Visual Studio 2015的本地副本中,这编译得很好。上周,构建服务器也可以让这个编译没有问题。突然,周一构建服务器开始出现错误:

QueryParser.cs(449,53):错误CS1620:参数2必须通过'ref'关键字传递[$projectPath'Core40.csproj]

当我切换(使用ref而不是out),构建服务器能够完成构建没有错误,但Visual Studio将不再编译。

从我阅读的相关文档,double.TryParse总是采取out关键字,所以一定有一些关于构建服务器的库,但我不确定什么或如何去诊断它。


问完下面的一些问题后,我回到班上,确认有多个decimal.TryParse(value, out result)int.TryParse(value, out result)float.TryParse(value, out result)long.TryParse(value, out result)Guid.TryParse(value, out result)实例。我也能够将"double"替换为"float",它工作得很好。这是double特有的。


显然,构建命令是:
msbuild  /m /p:Configuration=Release /p:Platform="Any CPU" $path'$solution.sln

另外,我可以用try { return double.Parse(value); } catch (Exception) { return DEFAUlT; }块替换TryParse(我的临时前进方式),但这实际上并不能解决问题。

获得“ref"在Double.TryParse中必需的关键字

原来这是某种类型的坏缓存问题。最终,DevOps重新启动了构建机器,问题就解决了。我很想知道真正的根本原因,但解决方案仍然是"关闭并再次打开它"。