c# - C# 可以像 Objective C 一样在 main 之前或之后运行代码吗

标签 c# objective-c static-methods

http://gcc.gnu.org/onlinedocs/gcc-2.95.3/objc-features_1.html#SEC2

GNU Objective-C 运行时提供了一种方法,允许您在程序执行进入主函数之前执行代码。该代码通过特殊的类方法 +load 在每个类和每个类别的基础上执行。

更新:我在下面读到的答案并不令人满意。从主程序调用函数没有什么特别的。问题是关于 HOOKING 系统,即系统在运行时调用一个函数,而您的程序甚至不知道它。

不要使用 Objective C,请参阅有关 Visual C++ 的这篇文章(感谢回答我之前问题的 stackoverflow 人员): http://www.codeguru.com/cpp/misc/misc/threadsprocesses/article.php/c6945

否则 Objective C Runtime 就不需要包含这个加载方法。 Objective C 程序当然存在主入口点,如果只需在主方法中调用静态方法就足够了,那就没什么大不了的:)

最佳答案

在 OOP 语言中,由于 main 始终位于类内部,因此总有一种方法可以在执行 main 函数之前运行一些代码。在Java中它被称为static initialization block 。 C# 中也提供类似的机制。 See this link

代码示例:

namespace CSharpConsoleTest
{
  class Program
  {
    static Program()
    {
        Console.WriteLine("Test123");
    }

    static void Main(string[] args)
    {
        Console.WriteLine("Test111");
    }
  }
}

重点是能够在类内部初始化静态变量,因为它们是在实例变量之前创建的。

关于c# - C# 可以像 Objective C 一样在 main 之前或之后运行代码吗,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4116098/

相关文章:

java - 这段代码多线程安全吗?

java - 绕过 Mockito 中的静态方法

c# - 如何获取执行类型的名称?

ios - 在同一个 .m 中声明了两个不同的实现,并重复声明了(不同!)方法

ios - AF网络和发送数组错误

ios - 使用 AFNetworking 的多部分 PUT 请求

c# - 关于c#的点(.)运算符

c# - Entity Framework 4 使用外键在 WinForms 组合框中进行数据绑定(bind)

c# - 将新数据保存到数据集中

c# - 如何在for循环中保留变量的位数