我有以下代码,我在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个.如果可能的话,我该怎么做?
继续使用静态构造函数进行相同的思考,您可以使用不受影响的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)
您可以附加一些事件来捕获应用程序的Exit事件:
但我想知道你想在这里实现什么?您确定无法更改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)
| 归档时间: |
|
| 查看次数: |
564 次 |
| 最近记录: |