【问题标题】:How to fix an operator to a void call in a button?如何将操作员修复为按钮中的无效呼叫?
【发布时间】:2017-09-26 19:03:16
【问题描述】:

我是初学者 C# 开发人员,但我忘记了一些事情。 (!ValidateCleared(actionsChecked)) 代码正在抛出并错误操作员!不能应用于 void。不确定如何在此示例中解决此问题。我尝试将其保留为布尔值并使用中断,但操作并没有达到预期的效果。它只检查了一个动作。

protected void btnSubmit_Click(object sender, EventArgs e)
{
    ValidateActionSelected();enter code here
    ValidateCleared(actionsChecked);

    if (!ValidateCleared(actionsChecked))
    {
        if (String.Equals(ddlActionsAndDocuments.SelectedItem.Text.ToString(), "XXX YYY") || String.Equals(ddlActionsAndDocuments.SelectedItem.Text.ToString(), "XXX ZZZ"))
        {
            reqEffectiveDate.ErrorMessage = "";
        }

        if (ddlActionsAndDocuments.SelectedValue == ActionTypes.XXXYYY ||
            ddlActionsAndDocuments.SelectedValue == ActionTypes.XXXYYYDenial ||
            ddlActionsAndDocuments.SelectedValue == ActionTypes.XXXzzz)
        {
            ValidateXXXYYY(actionsChecked, ddlActionsAndDocuments.Text);
        }

        if (ddlActionsAndDocuments.SelectedValue == InsuranceActionTypes.WWW ||
            ddlActionsAndDocuments.SelectedValue == InsuranceActionTypes.YYYZZZ ||
            ddlActionsAndDocuments.SelectedValue == InsuranceActionTypes.YYYWWW ||
            ddlActionsAndDocuments.SelectedValue == InsuranceActionTypes.YYYWaived)
        {
            ValidateCertificate(actionsChecked, ddlActionsAndDocuments.Text);
        }
    }
}

private void ValidateCleared(List<xxCaseEntity> actionsChecked)
{

    //bool error = false;

    foreach (xxCaseEntity ACTIONyy in actionsChecked)
    {
        if (ACTIONyy.XXStatusCode == 40 || ACTIONyy.XXStatusCode == 45)
        {
            //error = true;
            DisplayErrorMessage("FR Action Cannot Apply to " + ACTIONyy.CaseIdentifier);

            actionsChecked.Remove(ACTIONyy);
            //break;
        }

    }
    return;

    //return error;
}

【问题讨论】:

  • 如果你想使用ValidateCleared(),就好像它返回bool而不是void,试着让它实际返回bool而不是void。更改声明的返回类型,并更改 ValidateCleared() 中的代码,使其在通过该方法的每个路径中返回 true 或 false。
  • 在 ValidateCleared 方法中取消注释您的代码。
  • bool 方法工作正常。但对于其他功能,我需要它返回 void。
  • @TeresaScudder 不,你永远不需要它来返回 void。您可以忽略返回值。
  • 如果我需要对返回的值做些什么?

标签: c# void function-calls


【解决方案1】:

固定代码如下

protected void btnSubmit_Click(object sender, EventArgs e)
    {
        ValidateActionSelected();enter code here
        ValidateCleared(actionsChecked);

        if (!ValidateCleared(actionsChecked))
        {
            if (String.Equals(ddlActionsAndDocuments.SelectedItem.Text.ToString(), "XXX YYY") || String.Equals(ddlActionsAndDocuments.SelectedItem.Text.ToString(), "XXX ZZZ"))
            {
                reqEffectiveDate.ErrorMessage = "";
            }

            if (ddlActionsAndDocuments.SelectedValue == ActionTypes.XXXYYY ||
                ddlActionsAndDocuments.SelectedValue == ActionTypes.XXXYYYDenial ||
                ddlActionsAndDocuments.SelectedValue == ActionTypes.XXXzzz)
            {
                ValidateXXXYYY(actionsChecked, ddlActionsAndDocuments.Text);
            }

            if (ddlActionsAndDocuments.SelectedValue == InsuranceActionTypes.WWW ||
                ddlActionsAndDocuments.SelectedValue == InsuranceActionTypes.YYYZZZ ||
                ddlActionsAndDocuments.SelectedValue == InsuranceActionTypes.YYYWWW ||
                ddlActionsAndDocuments.SelectedValue == InsuranceActionTypes.YYYWaived)
            {
                ValidateCertificate(actionsChecked, ddlActionsAndDocuments.Text);
            }
        }
    }

    private bool ValidateCleared(List<xxCaseEntity> actionsChecked)
    {
        List<xxCaseEntity> removeItems = new List<xxCaseEntity>();
        foreach (xxCaseEntity ACTIONyy in actionsChecked)
        {
            if (ACTIONyy.XXStatusCode == 40 || ACTIONyy.XXStatusCode == 45)
            {
                DisplayErrorMessage("FR Action Cannot Apply to " + ACTIONyy.CaseIdentifier);

                //actionsChecked.Remove(ACTIONyy);
                removeItems.Add(ACTIONyy);
            }
        }
        foreach(xxCaseEntity ACTIONyy in removeItems)
        {
            actionsChecked.Remove(ACTIONyy);
        }
        return true;
    }

【讨论】:

  • 您的版本无法编译。
猜你喜欢
  • 1970-01-01
  • 2016-04-08
  • 1970-01-01
  • 2018-02-24
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-06-09
  • 1970-01-01
相关资源
最近更新 更多