C#嵌套函数不会触发

时间:2014-09-16 14:23:05

标签: c# function

你好我想问你一个关于某个程序的小问题。所以基本上程序(控制台应用程序)从其他Procees(程序)读取数据包并传送数据包,以便对它们进行分析。我标记的问题是我的一个嵌套函数不会触发(完全)。例如:

  1. 此行位于Main()函数中。与其他人一起,这只是一个剪辑

     captureDevice.OnPacketArrival += new       PacketArrivalEventHandler(Program.device_OnPacketArrival);
    
  2. 之后我有一些console.writeline等没什么特别的。

    1. device_OnPacketArrival()是函数与其他一些嵌套函数。

       private static void device_OnPacketArrival(object sender, CaptureEventArgs packet)
          {
      
         DateTime date = packet.Packet.Timeval.Date;
         int length = packet.Packet.Data.Length;
          ..........
          Program.ValidateItem(first_db_id, first_bin_id, out char_id, out user_id, out        type, out valid);
          ............
      
    2. 导致问题的函数是:ValidateItem()

       public static void ValidateItem(int item_Id, int item_type, out int char_id, out   int user_id, out int type, out int valid)
      {
      
          valid = type = user_id  = char_id = 0;
      
          string oString = "SELECT type,char_id,user_id FROM [DB].[dbo].[Table] WHERE id = @item_id";
          SqlCommand oCmd = new SqlCommand(oString, Program.s_DB);
          oCmd.Parameters.AddWithValue("@item_id", item_Id);
          try
          {
              using (SqlDataReader oReader = oCmd.ExecuteReader())
              {
                  if (oReader.Read())
                  {
                      type = Convert.ToInt32(oReader["type"]);
                      char_id = Convert.ToInt32(oReader["char_id"]);
                      user_id = Convert.ToInt32(oReader["user_id"]);
                      if (type == item_type)
                      {
                          valid = 1;
                      }
                      else
                      {
                          valid = 0;
                      }
      
                  }
      
              }
          }
          catch (Exception ex)
          {
              Console.WriteLine(ex);
      
          }
      
      }
      
    3. 问题是只初始化了函数的第一行 - valid = type = user_id = char_id = 0;但是,如果我直接在Main()中运行该函数,它的工作正常。

1 个答案:

答案 0 :(得分:1)

不确定是否回答了您的问题 但在c#中没有"嵌套"功能,如果你需要创造"幻觉"尝试使用annonymus functions