C#可以在main之前或之后运行代码,就像在Objective C中一样

use*_*291 2 c# static-methods objective-c

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

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

更新:我在下面阅读的答案并不令人满意.从主程序调用函数没什么特别之处.问题是关于HOOKING SYSTEM是SYSTEM在没有你的程序的情况下调用函数,即使在RUNTIME上也知道它.

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

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

Fah*_*eem 6

在OOP语言中,因为main总是在一个类中,所以总有一种方法可以在执行main函数之前运行一些代码.在Java中,它被称为静态初始化块.C#也提供了类似的机制.看到这个链接

代码示例:

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

    static void Main(string[] args)
    {
        Console.WriteLine("Test111");
    }
  }
}
Run Code Online (Sandbox Code Playgroud)

那么关键是能够在类中初始化静态变量,因为它们是在实例变量之前创建的.