捕获空值在字符串数组中使用 Foreach 语句错误

本文关键字:Foreach 语句 错误 数组 空值 字符串 | 更新日期: 2023-09-27 18:33:48

public void GrantAccesOnPage(int AccessPoint1, int AccessPoint2) 
        {
            GlobalVariables.GrantDeny = 0;
            string[] arr = { 
                               GlobalVariables.SessionPort1, 
                               GlobalVariables.SessionPort2, 
                               GlobalVariables.SessionPort3, 
                               GlobalVariables.SessionPort4 
                           };
            foreach (var r in arr)
            {
                if (Convert.ToInt32(r) == AccessPoint1 || Convert.ToInt32(r) == AccessPoint2)
                {
                    if (!string.IsNullOrEmpty(r.ToString()))
                    {
                        GlobalVariables.GrantDeny = 1;
                    }
                    else 
                    {
                        throw new System.ArgumentException("Null");
                    }
                }
            }
            if (GlobalVariables.GrantDeny != 1)
            {
                Response.Redirect("PageNotAccessable.aspx");
            }
        }

我尝试将我的"r"foreach 语句中的每个"Var"转换为字符串或 int,但仍然没有捕获空值,也尝试了抛出异常,如果为空,它不会跳过,它会将页面停止到错误视图中。 请帮忙..

捕获空值在字符串数组中使用 Foreach 语句错误

您应该首先检查 IsNull:

public void GrantAccesOnPage(int AccessPoint1, int AccessPoint2) 
        {
            GlobalVariables.GrantDeny = 0;
            string[] arr = { 
                               GlobalVariables.SessionPort1, 
                               GlobalVariables.SessionPort2, 
                               GlobalVariables.SessionPort3, 
                               GlobalVariables.SessionPort4 
                           };
            foreach (var r in arr)
            {
                if (string.IsNullOrEmpty(r))
                {
                    //remove the comment out only if you want to throw the exception. 
                    //throw new System.ArgumentException("Null");  
                }
                else
                {    
                   if (Convert.ToInt32(r) == AccessPoint1 || Convert.ToInt32(r) == AccessPoint2)
                   {
                        GlobalVariables.GrantDeny = 1;                    
                   }
                }
            }
            if (GlobalVariables.GrantDeny != 1)
            {
               Response.Redirect("PageNotAccessable.aspx");
            }
        }