【问题标题】:Is it possible to apply attribute to the generated main method in a top-level application?是否可以将属性应用于顶级应用程序中生成的 main 方法?
【发布时间】:2021-03-13 17:09:58
【问题描述】:

C#9 支持top-level statements,但我很好奇是否可以将任何属性应用于生成的主方法(实际上是STAThread),或者我必须使用经典方法和Main 方法。

【问题讨论】:

  • 您的意思是您想在 WinForms 应用程序中使用此功能?
  • 不需要WF,但是是的,我用过,但现在我需要申请[STAThread],所以我切换回显式定义main方法。
  • 我从未使用过它,但我的理解是,此功能适用于控制台应用程序,以简化方法。或其他更具体/有针对性的用途。我不知道它在 WinForms 应用中的 优势 是什么。 WPF 已经有它自己的 hiding Main. 方式
  • @TnTinMn 这也是一个选项,谢谢你的想法。

标签: c# winforms .net-5 sta c#-9.0


【解决方案1】:

此功能专为语言新手设计,因此他们无需每次都编写大量样板文件。所以这个

namespace HelloWorldProg
{ 
      public static class HelloWorldClass 
      {  
           public static void Main(string[] args) 
           { 
              System.Console.WriteLine("Finally I can write Hello World");  
           } 
       }  
}

转换成这个

System.Console.WriteLine("That's much easier!");

这是一个入门门槛和学习曲线的问题。没有顶级声明你需要了解

  1. 命名空间
  2. 封装
  3. 静态/实例成员
  4. 传递参数
  5. 数组
  6. 如何将文本写入控制台

虽然使用顶级语句,您只需要了解最后一项即可编写程序,并且您可以稍后深入研究其他主题。

这就像“如何在 Haskell 中编写 'hello world'”。嗯,你需要知道 monads,尤其是 IO 和 do-notation。要了解 monad,您应该学习范畴论。

现在回答您的问题: 您不能使用顶级语句声明属性。它们是为不同的目的而设计的。 Proposal, priorities in platform design

【讨论】:

    猜你喜欢
    • 2014-09-21
    • 2020-08-28
    • 1970-01-01
    • 1970-01-01
    • 2012-10-03
    • 2020-08-22
    • 2011-05-07
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多