gpt4 book ai didi

c# - 方法的优先顺序?

转载 作者:行者123 更新时间:2023-11-30 13:43:15 26 4
gpt4 key购买 nike

假设我有两种方法。一种是由列表框中所选索引更改触发的方法。第二种方法有助于清除所有文本框,将列表框索引设置为 -1,并设置焦点。

问题:

方法二执行,在代码中它将列表框的选定索引更改为-1,从而触发方法一的事件触发器。方法 2 是否暂停它自己的执行并将过程转移到事件,然后在方法 1 完成后返回其工作......或者方法 2 完成其整个代码块然后转移到方法 1 因为所选索引发生变化?

最佳答案

第一种情况。

让我们暂时不考虑线程,特别是因为它们不涉及您的场景。

您谈论的是属性和方法,但在这一切之下,它们都只是函数。当一个函数调用另一个函数时,程序中的控制权将转移到被调用函数。当该函数完成运行时,控制返回到它被调用的地方。您的程序会自动记住需要返回的位置,无论函数调用更多函数的深度如何。*

当您的第二个函数设置索引时,真正发生的是编译器将属性设置操作转换为函数调用。 (属性最终只是函数的“语法糖”。)该函数调用了一堆对场景不重要的其他函数,除了其中一个是调用“索引已更改”事件处理程序的函数。它看到您有一个与该事件关联的方法,并调用您的第一个方法。

您的第一个方法运行,当它完成时,它返回到“调用索引更改事件处理程序”函数。最终,该函数和所有其他不重要的函数完成运行(可能在依次调用更多函数之后),并且“设置索引属性”函数将控制权返回给您的第二个方法。

您可以向自己证明您的第一个建议是如何运作的。在您的第一个方法中显示一个消息框,并在您设置索引属性的第二个方法中之后显示另一个消息框。 (使用不同的消息!)您应该看到第一条消息出现,并且在您关闭消息框后,您应该看到第二条消息出现,从而表明第二个方法在第一个方法运行时没有继续执行。

* 有一个限制, 但很少达到,除非您的程序中有错误。当您有太多嵌套函数调用时,就会发生堆栈溢出

关于c# - 方法的优先顺序?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/567927/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com