获取值或返回null

时间:2018-09-06 01:33:56

标签: c# return

我有一种在html文档中搜索值的方法,如果找到一个项目((“ settingsings”)),则返回该值。 但是,如果找不到该元素((“ settings”)),则循环退出。 我想如果找不到该项目,则CurrentProfileDLS设置为null

private string CopyProfileDLS_Intercept_AddPhone_Unify(string CurrentProfileDLS)
{
    var elmC = web_Browser.Document.GetElementsByTagName("select");
    foreach (HtmlElement elm in elmC)
    {
        if (elm.Id == "DLSProf")
        {
            if (elm.InnerText.Contains("settings"))
            {
                CurrentProfileDLS = elm.GetAttribute("value");
            }
        }
    }
    return CurrentProfileDLS;
}

我尝试过,但是CurrentProfileDLS变量未设置为null:

private string CopyProfileDLS_Intercept_AddPhone_Unify(string CurrentProfileDLS)
{
    var elmC = web_Browser.Document.GetElementsByTagName("select");
    foreach (HtmlElement elm in elmC)
    {
        if (elm.Id == "DLSProf")
        {
            if (elm.InnerText.Contains("settings"))
            {
                CurrentProfileDLS = elm.GetAttribute("value");
            }
            return CurrentProfileDLS;
        }
    }
    return null;
}

如何解决?

3 个答案:

答案 0 :(得分:2)

似乎甚至不需要private string CopyProfileDLS_Intercept_AddPhone_Unify() { var elmC = web_Browser.Document.GetElementsByTagName("select"); var elm = elmC.FirstOrDefault(e => e.Id == "DLSProf" && e.InnerText.Contains("Settings")); return elm?.GetAttribute("value"); } 。为什么不仅仅根据结果直接返回?

var elm = elmC.LastOrDefault(e => e.Id == "DLSProf" && e.InnerText.Contains("Settings"));

您的原始帖子可让循环继续查找比赛,从而使行为类似于“获胜中的最后一个”,因此,如果仍然需要,您可以将该行更改为:

cur_yaml['organizations'] += [org_data]

答案 1 :(得分:1)

您只需要将CurrentProfileDLS初始设置为null。

private string CopyProfileDLS_Intercept_AddPhone_Unify(string CurrentProfileDLS)
{
    CurrentProfileDLS = null;
    var elmC = web_Browser.Document.GetElementsByTagName("select");
    foreach (HtmlElement elm in elmC)
    {
        if (elm.Id == "DLSProf")
        {
            if (elm.InnerText.Contains("settings"))
            {
                CurrentProfileDLS = elm.GetAttribute("value");
            }
            break;
        }
    }
    return CurrentProfileDLS;
}

我不了解参数CurrentProfileDLS的用途。如果除存储CurrentProfileDLS = elm.GetAttribute("value");中的值之外没有其他目的,建议您删除它。

private string CopyProfileDLS_Intercept_AddPhone_Unify()
{
    string CurrentProfileDLS = null;
    var elmC = web_Browser.Document.GetElementsByTagName("select");
    foreach (HtmlElement elm in elmC)
    {
        if (elm.Id == "DLSProf")
        {
            if (elm.InnerText.Contains("settings"))
            {
                CurrentProfileDLS = elm.GetAttribute("value");
            }
            break;
        }
    }
    return CurrentProfileDLS;
}

答案 2 :(得分:1)

您要传递一个要设置(或为空)的值,但不使用参数上的df.set_index('Date', inplace=True) 修饰符。不知道确切为什么要传递Out的情况下,我建议对

进行轻微修改
CurrentProfileDLS

通过这种方式,您可以将字段初始化为null并在最后将其返回,而不管其是否被private string CopyProfileDLS_Intercept_AddPhone_Unify() { string CurrentProfileDLS = null; var elmC = web_Browser.Document.GetElementsByTagName("select"); foreach (HtmlElement elm in elmC) { if (elm.Id == "DLSProf") { if (elm.InnerText.Contains("settings")) { CurrentProfileDLS = elm.GetAttribute("value"); } } } return CurrentProfileDLS; } 覆盖。