zoukankan      html  css  js  c++  java
  • [导入]ASP.net里的几个逻辑问题!


    选看这样的一个例子:

      public void FindParentID(long int_ChildID,long[] arr_parIDs,int int_times)
      {
       SqlDataReader obj_dataReader;
       SqlCommand  obj_command  = new SqlCommand("select s_parID from t_cpyNewsSort where s_id="+int_ChildID.ToString(),this.obj_conn);
       obj_dataReader = obj_command.ExecuteReader();  
       if(obj_dataReader.Read())
       {
        long log_ParID = obj_dataReader.GetInt64(0);
        obj_dataReader.Close();
        this.TraceMsg(log_ParID.ToString());
        arr_parIDs.SetValue(log_ParID,int_times);
        if(log_ParID!=-1)
        {
         FindParentID(log_ParID,arr_parIDs,++int_times);
        }   
       }
       else
       {
        obj_dataReader.Close();
       }  
      }

    这一句让我想了关半天也没想明白为什么要放在前面。这样试过,

      public void FindParentID(long int_ChildID,long[] arr_parIDs,int int_times)
      {
       SqlDataReader obj_dataReader;
       SqlCommand  obj_command  = new SqlCommand("select s_parID from t_cpyNewsSort where s_id="+int_ChildID.ToString(),this.obj_conn);
       obj_dataReader = obj_command.ExecuteReader();  
       if(obj_dataReader.Read())
       {
        long log_ParID = obj_dataReader.GetInt64(0);
            this.TraceMsg(log_ParID.ToString());
        arr_parIDs.SetValue(log_ParID,int_times);
        if(log_ParID!=-1)
        {
         FindParentID(log_ParID,arr_parIDs,++int_times);
        }   
       }
      obj_dataReader.Close();
      }

      结果是该函数不能迭代调用了。不理解,唯一的解释就是: obj_dataReader对像不是在迭代的时候重新建立的,而是在使用同一个对像。不明白这是为什么,难道程序的运行结构不再是原来的栈内存模式??

      还有这一个:

      private bool CheckUser()
      {
     FormsIdentity id = (FormsIdentity)User.Identity;
       if(User.Identity.IsAuthenticated)
       {
        FormsIdentity id = (FormsIdentity)User.Identity;
        FormsAuthenticationTicket ticket = id.Ticket;
        TraceMsg(ticket.UserData.ToString());
        string str_UserData = ticket.UserData;
        if(str_UserData.IndexOf("_027NetAdmin")!=-1)
        {
         str_adminPower = str_UserData.Substring(str_UserData.IndexOf(",")+1);   
         return true;
        }
        else
        {
         return false;
        }   
       }
       else
       {
        return false;
       }
      }

       FormsIdentity id = (FormsIdentity)User.Identity;上面的两个换位置后也出现错误,这个我好理解,因为如果用户没有取得认证的时候,显示Identity是不存在的,当然也就不可能给FormsIdenity赋值了。但我郁闷的是MSDN上的示例就是那样做的。说明一个问题:MS自己都不是很清楚这些个Framework的完整结构,所以它里面也是有错误的(逻辑错误),也就更别说第三方公司提供的一些示例了,所以最后决定了:只能相信自己了。


    文章来源:http://computer.mblogger.cn/wucountry/posts/44262.aspx
    ================================
      /\_/\                        
     (=^o^=)  Wu.Country@侠缘      
     (~)@(~)  一辈子,用心做一件事!
    --------------------------------
      学而不思则罔,思而不学则怠!  
    ================================
  • 相关阅读:
    Grafana 监控系统是否重启
    Grafana 短信报警
    Python 协程检测Kubernetes服务端口
    python过滤 Kubernetes api数据
    django 实现文件下载功能
    python tar.gz格式压缩、解压
    kafka查看消费数据
    SublimeText设置在浏览器打开 快捷键
    php如何优雅地把数组传递给前端js脚本?
    jQuery因mouseover,mouseout冒泡产生的闪烁问题
  • 原文地址:https://www.cnblogs.com/WuCountry/p/305799.html
Copyright © 2011-2022 走看看