• C# Main方法 -0002


    main方法简介

    • Main方法是C#应用的入口函数,是程序启动时第一个被调用执行的方法;

    • Main方法需要声明在一个class或struct里面;

    • Main方法必须是static方法;

    • Main方法不必是public的

    main方法的定义

    • main方法可以是以下列表中的一个:

    public static void Main() { }
    public static int Main() { }
    public static void Main(string[] args) { }
    public static int Main(string[] args) { }
    public static async Task Main() { }
    public static async Task<int> Main() { }
    public static async Task Main(string[] args) { }
    public static async Task<int> Main(string[] args) { }
    • Task或Task<int>返回值类型,是在C# 7.1及之后的版本支持;

    • 如果返回值是Task或Task<int>类型,需要在前面加 async关键字;

    • 注:public关键字不是必须的,可以省略。

    多个Main方法

    • 当应用程序里面包含多个Main方法的时候,需要在编译的时候使用 /main选项指定入口是哪一个Main方法;

    • 示例:新加一个Hello类,里面也定义一个Main方法:

    using System;
    
    namespace _0002main_method
    {
        class Program
        {
            static void Main(string[] args)
            {
                Console.WriteLine($"this Main method in Program class");
            }
        }
    
        class Hello
        {
            static void Main(string[] args)
            {
                Console.WriteLine($"this Main method in Hello class");
            }
        }
    }
    

    当运行程序(dotnet run)时报错:

    Hello.cs(7,21): error CS0017: Program has more than one entry point defined. Compile with /main to specify the type that contains the entry point. The build failed. Fix the build errors and run again.

    多Main方法-解决办法  

    使用csc编译

    csc Program.cs /main:_0002main_method.Hello
    

    使用dotnet build

    dotnet build /p:StartupObject=_0002main_method.Hello
    

    补充说明

    • 不能在dotnet 命令使用/main的原因是:/main参数是编译器(csc)的参数,不是dotnet的;

    • dotnet build本质会去调用MSBuild,MSBuild进而调用csc;所以需要用MSBuild的参数/p指定对应的类,然后其会再转给csc。

  • 相关阅读:
    fastText文本分类算法
    迁移学习综述
    Doc2vec实现原理
    skip-thought vector 实现Sentence2vector
    IRT模型的参数估计方法(EM算法和MCMC算法)
    解决不能再jupyter notebook中使用tensorflow
    TensorFlow——循环神经网络基本结构
    React项目使用React-Router
    初始化一个React项目(TypeScript环境)
    TypeScript TSLint(TypeScript代码检查工具)
  • 原文地址:https://www.cnblogs.com/codesee/p/13021521.html
Copyright © 2020-2023  润新知