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@侠缘      
     (~)@(~)  一辈子,用心做一件事!
    --------------------------------
      学而不思则罔,思而不学则怠!  
    ================================
  • 相关阅读:
    docker 应用-1(安装以及基础命令)
    网桥原理及使用
    【年终总结】个人的2019年年终总结
    【bat批处理】批量执行某个文件夹下的所有sql文件bat批处理
    【实用工具】.fbr格式免费播放器 FBR格式 Free FlashBack Player
    【SQL骚操作】SqlServer数据库表生成C# Model实体类SQL语句
    【算法基础】面试过程中遇到的一些算法题输出杨辉三角
    【sql基础】按照名字分组查询时间最早的一条记录
    【面试题】java面试题整理(有空再贴答案)
    【海驾资料】海淀驾校科目三考试资料
  • 原文地址:https://www.cnblogs.com/WuCountry/p/305799.html
Copyright © 2011-2022 走看看