繁体   English   中英

从字典中获取 int 值<string,string></string,string>

[英]Get int value from Dictionary<string,string>

我有一个AssignApiPollerParameters方法,它可以获取Dictionary<string,string>配置,并且可以用于我的其他方法,但是我有返回 int 的方法ExtractPollingInterval

如何解决此冲突并从字典中获取或转换它?

public ApiPollerTemplateParameters AssignApiPollerParameters(Dictionary<string, string> configuration)
{
    return SetBaseProperties<ApiPollerTemplateParameters>(
    new ApiPollerTemplateParameters {PollingInterval = ExtractPollingInterval(configuration)});
}

private static int ExtractPollingInterval(IReadOnlyDictionary<string, string> configuration)
{
    int pollingInterval;
    return configuration.TryGetValue(PollingIntervalProperty, out pollingInterval ) ? pollingInterval : 0;
}

您需要首先将值作为字符串获取并将其转换为 int。 一个简单的示例是:

private static int ExtractPollingInterval(IReadOnlyDictionary<string, string> configuration)
{
    string pollingInterval;
    return configuration.TryGetValue(PollingIntervalProperty, out pollingInterval) 
      ? int.Parse(pollingInterval) 
      : 0;
}

上面的代码从字典中读取字符串并使用int.Parse从字符串中读取 integer。 请注意,如果字符串不包含有效的 integer, int.Parse将引发错误。 这也可能取决于区域设置。

为了处理无效值,您可以使用int.TryParse ,例如

private static int ExtractPollingInterval(IReadOnlyDictionary<string, string> configuration)
{
    string pollingIntervalStr;
    if (!configuration.TryGetValue(PollingIntervalProperty, out pollingIntervalStr))
    {
      return 0; // No value provided at all
    }
    // Value provided, but maybe not a valid integer
    return int.TryParse(pollingIntervalStr, out var pollingInterval)
      ? pollingInterval 
      : 0;
}

int.Parseint.TryParse有各种重载,它们为区域设置提供参数。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM