C#嵌套函数Wont触发器
本文关键字:触发器 Wont 函数 嵌套 | 更新日期: 2023-09-27 18:22:07
你好,我想问你关于某个程序的一个小问题。因此,基本上,程序(控制台应用程序)从其他Procee(程序)读取数据包,并传递数据包,以便对其进行分析。我研究的问题是,我的一个嵌套函数不会(完全)触发。示例:
-
这一行位于Main()函数中。与其他内容一起,这只是一个剪辑
captureDevice.OnPacketArrival += new PacketArrivalEventHandler(Program.device_OnPacketArrival);
之后我有了一些安慰。写信等等。没什么特别的。
-
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); ............
-
导致问题的函数是: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); } }
问题是,只有函数的第一行被初始化——valid=type=user_id=char_id=0;但如果我直接在Main()中运行该函数,它的工作原理很好。
不确定是否回答了您的问题但是在c中没有"嵌套"函数,如果您需要创建"幻觉",请尝试使用annonymus函数