&与&&

     MSDN上的解释:条件“与”运算符 (&&) 执行其 bool 操作数的逻辑“与”运算,但仅在必要时才计算第二个操作数。

     操作x && y  对应于操作 x & y ,不同的是,如果 x  false,则不计算 y(因为不论 y 为何值,“与”操作的结果都为 false)。 这被称作为“短路”计算。

不能重载条件“与”运算符,但常规逻辑运算符和运算符 true  false 的重载,在某些限制条件下也被视为条件逻辑运算符的重载。

     下面介绍的场景:

      1 if(userName !=null && userName .length>0) 这样的条件只能用&&,而不能用&,因如果用userName !=null 为false 的话,userName .lengh>0就不会再判断了,但如果换成& 的就会报错。这种场景下只能使用&&。

         2 if(userName!=null && age>0) 这种场景下&&和& 都可以,但&&性能会好一点,因为x为false ,那么就不会再判断y了

        3  还有一种场景需要使用& ,如:silverlight 后台数据验证,当提交后没有通过验证的都需要标记,这种情况下就可以用&。

           

      private bool ValidateData()
        {
            this.ClearError();
            return ValidUserName() & ValidRoleType();  
        }

        private bool ValidUserName()
        {
            if (string.IsNullOrEmpty(this.UserName))
            {
                this.AddError("UserName", "用户名不能为空");
                return false;
            }
            else
            {
                this.RemoveError("UserName");
                return true;
            }
        }

        private bool ValidType()
        {
            if (TypeIndex == 0)
            {
                this.AddError("TypeIndex", "请选择类型");
                return false;
            }
            else
            {
                this.RemoveError("TypeIndex");
                return true;
            }
        }
     

  

posted on 2011-08-29 22:38  tianyaxiang  阅读(2481)  评论(7编辑  收藏  举报

导航