在调用Main()方法后如何打印任何值?

Neo*_*Neo 5 .net c#

我有以下代码,我在Main()使用静态构造函数调用方法之前打印值.如何在Main()返回后打印另一个值而不修改Main()方法

我想输出像:

1st 
2nd 
3rd
Run Code Online (Sandbox Code Playgroud)

我使用的"基础"代码:

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

我在Myclass中添加了一个静态构造函数来显示"1st"

class Myclass
{     
static Myclass() { Console.WriteLine("1st"); }   //it will print 1st 
    static void Main(string[] args)
    {
        Console.WriteLine("2nd"); // it will print 2nd
    }              
}
Run Code Online (Sandbox Code Playgroud)

现在我需要做的是在不修改Main()方法的情况下打印第3个.如果可能的话,我该怎么做?

nag*_*eeb 6

继续使用静态构造函数进行相同的思考,您可以使用不受影响的Main()的AppDomain.ProcessExit事件.

class Myclass
    {
        // will print 1st also sets up Event Handler
        static Myclass()
        {
            Console.WriteLine("1st");
            AppDomain.CurrentDomain.ProcessExit += new EventHandler(CurrentDomain_ProcessExit);
        }

        static void Main(string[] args)
        {
            Console.WriteLine("2nd"); // it will print 2nd
        }

        static void CurrentDomain_ProcessExit(object sender, EventArgs e)
        {
            Console.WriteLine("3rd");
        }
    }
Run Code Online (Sandbox Code Playgroud)


Eri*_*oen 5

您可以附加一些事件来捕获应用程序的Exit事件:

.NET控制台应用程序退出事件

但我想知道你想在这里实现什么?您确定无法更改Main方法吗?如果没有,为什么?

你不能把Main的方法体分成另一种方法,并使你的Main看起来像这样:

class Myclass
{     
static Myclass() 
    static void Main(string[] args)
    {
        Console.WriteLine("1st");
        Process(args);
        Console.WriteLine("3rd");
    }  

    static void Process(string[] args) {
        Console.WriteLine("2nd"); // it will print 2nd
    }
}
Run Code Online (Sandbox Code Playgroud)