C# 控制台应用模板可生成顶级语句

news2024/10/7 12:26:09

C# 控制台应用模板可生成顶级语句

  • 项目
  • 2024/01/08
  • 10 个参与者

反馈

本文内容

  1. 使用新的程序样式
  2. 隐式 using 指令
  3. 全局 using 指令
  4. 使用旧程序样式

从 .NET 6 开始,新 C# 控制台应用的项目模板在 Program.cs 文件中生成以下代码:

C#复制

// See https://aka.ms/new-console-template for more information
Console.WriteLine("Hello, World!");

新的输出使用最新的 C# 功能,这些功能简化了需要为程序编写的代码。 对于 .NET 5 及更早版本,控制台应用模板生成以下代码:

C#复制

using System;

namespace MyApp // Note: actual namespace depends on the project name.
{
    internal class Program
    {
        static void Main(string[] args)
        {
            Console.WriteLine("Hello World!");
        }
    }
}

这两种形式代表同一个程序。 两者都适用于 C# 10.0。 使用较新版本时,只需编写 Main 方法的主体。 编译器会生成一个具有入口点方法的 Program 类,并将你的所有顶级语句置于该方法中。 生成的方法的名称不是 Main,它是你的代码无法直接引用的实现细节。 不需要包含其他程序元素,编译器会为你生成这些元素。 你可以在 C# 指南的基础部分中,在关于顶级语句的文章中详细了解使用顶级语句时编译器生成的代码。

对于尚未更新为使用 .NET 6+ 模板的教程,可以使用以下两个选项:

  • 使用新的程序样式,添加功能时添加新的顶级语句。
  • 使用 Program 类和 Main 方法将新程序样式转换为旧样式。

如果要使用旧模板,请参阅本文后面的使用旧程序样式。

使用新的程序样式

使新程序更简单的功能是顶级语句、全局 using 指令和隐式 using 指令 。

术语顶级语句是指编译器会为主程序生成类和方法元素。 编译器生成的类和入口点方法在全局命名空间中声明。 你可以查看新应用程序的代码,并假设它包含早期模板所生成的 Main 方法内的语句,但位于全局命名空间中。

你可以向程序添加更多语句,就像用传统方式将更多语句添加到 Main 方法一样。 可以访问 args(命令行参数)、使用 await 并设置退出代码。 甚至可以添加函数。 它们被创建为嵌套在生成的入口点方法中的本地函数。 本地函数不能包括任何访问修饰符(例如 public 或 protected)。

顶级语句和隐式 using 指令都简化了构成应用程序的代码。 若要按照现有教程操作,请将所有新语句添加到模板生成的 Program.cs 文件中。 假设在本教程的说明中,你编写的语句位于 Main 方法中的左大括号和右大括号之间。

如果你更喜欢使用较旧的格式,则可以复制本文第二个示例中的代码,并像以前一样继续学习本教程。

有关顶级语句的详细信息,请参阅有关顶级语句的教程。

隐式 using 指令

术语“隐式 using 指令”是指编译器会根据项目类型自动添加一组 using 指令。 对于控制台应用程序,以下指令隐式包含在应用程序中:

  • using System;
  • using System.IO;
  • using System.Collections.Generic;
  • using System.Linq;
  • using System.Net.Http;
  • using System.Threading;
  • using System.Threading.Tasks;

其他应用程序类型包括更多对这些应用程序类型通用的命名空间。

如果需要未隐式包含的 using 指令,可以将这些指令添加到包含顶级语句的 .cs 文件或其他 .cs 文件中。 对于应用程序的所有 .cs 文件中所需的 using 指令,请使用全局 using 指令。

禁用隐式 using 指令

如果想删除此行为并手动控制项目中的所有命名空间,请将 <ImplicitUsings>disable</ImplicitUsings> 添加到项目文件的 <PropertyGroup> 元素中,如以下示例所示:

XML复制

<Project Sdk="Microsoft.NET.Sdk">

  <PropertyGroup>
    ...
    <ImplicitUsings>disable</ImplicitUsings>
  </PropertyGroup>

</Project>

全局 using 指令

全局 using 指令导入整个应用程序的命名空间,而不是单个文件。 可以通过向项目文件添加 <Using> 项或将 global using 指令添加到代码文件来添加这些全局指令。

还可以在项目文件中添加一个具有 Remove 属性的 <Using> 项,以删除特定的隐式 using 指令。 例如,如果通过 <ImplicitUsings>enable</ImplicitUsings> 启用隐式 using 指令功能,则添加以下 <Using> 项会从隐式导入的命名空间中删除 System.Net.Http 命名空间:

XML复制

<ItemGroup>
  <Using Remove="System.Net.Http" />
</ItemGroup>

使用旧程序样式

从 .NET SDK 6.0.300 开始,console 模板具有选项 --use-program-main。 请使用它来创建不使用顶级语句且具有 Main 方法的控制台项目。

.NET CLI复制

dotnet new console --use-program-main

生成的 Program.cs 如下所示:

C#复制

namespace MyProject;
class Program
{
    static void Main(string[] args)
    {
        Console.WriteLine("Hello, World!");
    }
}

在 Visual Studio 中使用旧程序样式

  1. 创建新项目时,设置步骤将导航到“其他信息”设置页。 在此页上,选择“不要使用顶级语句”复选框。

    Visual Studio do not use top-level statements check box

  2. 创建项目后,Program.cs 内容如下所示:

    C#复制

    namespace MyProject;
    class Program
    {
        static void Main(string[] args)
        {
            Console.WriteLine("Hello, World!");
        }
    }

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1697717.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

C语言基础(六)

C语言基础 指针与一维数组总结 * p、* (p)、&#xff08;\*p&#xff09;、* p、*(p)、*p区别和用法运算优先级p与p区别*p与 *&#xff08;p&#xff09;与&#xff08;*p&#xff09;*p与 *&#xff08;p&#xff09;与 *p 指针常量与一维数组的关系指针变量与一维数组的关系数…

基于FIDO2和USBKEY硬件的SSH认证

在 8.2&#xff08;最新为 8.3&#xff09;版本中&#xff0c;OpenSSH 提供了对 FIDO 和 UAF 的支持。从此用户就可以用硬件 USBKEY 证书进行 SSH 原生认证。这样可以实现简捷、有效和安全的 SSH 认证。本文我们就就少一下 FIDO2 以及 OpenSSH 对其的支持&#xff0c;并尝试一下…

十大排序 —— 冒泡排序

十大排序 —— 冒泡排序 什么是冒泡排序基本步骤特点 优化冒泡的各项性能时间复杂度空间复杂度稳定性总结 我们今天来讲一个大家熟悉的老朋友——冒泡排序&#xff1a; 什么是冒泡排序 冒泡排序&#xff08;Bubble Sort&#xff09;是一种简单的排序算法&#xff0c;因其工作…

【大模型部署】在C# Winform中使用文生图Stable Diffusion XL 模型

【大模型部署】在C# Winform中使用文生图Stable Diffusion XL 模型 前言 整了一个在C# Winform中调用文生图Stable Diffusion XL的小程序&#xff0c;基于百度智能云千帆平台 步骤 如何注册百度智能云和创建应用&#xff0c;获取API 密钥等和在之前的博客中基本相同&#…

单日收益1000+看了就会的项目,最新灵异短视频项目,简单好上手可放大操作

各位好友&#xff0c;佳哥在此与大伙儿聊聊一项神秘莫测的短视频项目。你或许会想&#xff0c;“又是一个视频创作项目&#xff1f;” 但别急&#xff0c;这个项目与众不同&#xff0c;日入千元不再是梦&#xff0c;而且它的易用性让人惊喜&#xff0c;无论你是初学者还是资深玩…

面向对象------多态

1.多态的定义 通俗来说&#xff0c;当同一种行为或者事情发生在不同的对象上&#xff0c;这些行为或者事情最终得到的结果不同。 注意&#xff1a;多态要发生在继承的基础上。 例如&#xff1a;彩色打印机和黑白打印机。 彩色打印机和黑白打印机是不同的对象&#xff0c;但…

兵器室管控系统|DW-306是一套成熟系统

概述 智慧兵器室管理系统&#xff08;DW-S306&#xff09;是依托互3D技术、大数据、RFID技术、数据库技术、AI、视频分析技术对RFID智能仓库进行统一管理、分析的信息化、智能化、规范化的系统。 本解决方案利用现有内部网络&#xff0c;部署部队智能兵器室管理系统&#xff…

Python并发编程学习记录

1、初识并发编程 1.1、串行&#xff0c;并行&#xff0c;并发 串行(serial)&#xff1a;一个cpu上按顺序完成多个任务&#xff1b; 并行(parallelism)&#xff1a;任务数小于或等于cup核数&#xff0c;多个任务是同时执行的&#xff1b; 并发(concurrency)&#xff1a;一个…

小浪助手下载学浪视频的简单步骤

你是否想轻松下载学浪高清视频&#xff1f;快来尝试小浪助手&#xff0c;这是你不可错过的下载神器&#xff01;简单几步操作&#xff0c;即可轻松下载你所需的学浪视频&#xff0c;节省时间&#xff0c;提高效率&#xff01; 首先我已经打包好了小浪助手&#xff0c;有需要的…

DOS学习-目录与文件应用操作经典案例-attrib

新书上架~&#x1f447;全国包邮奥~ python实用小工具开发教程http://pythontoolsteach.com/3 欢迎关注我&#x1f446;&#xff0c;收藏下次不迷路┗|&#xff40;O′|┛ 嗷~~ 目录 一.前言 二.使用 三.案例 一.前言 DOS系统中的attrib命令是一个用于显示或更改文件&#…

内网渗透—SMB隧道正反向连接防火墙规则绕过CS上线

1、前言 这篇文章主要是说一下这个用于横向移动的SMB隧道&#xff0c;已经如何使用smb隧道去进行横向移动。 2、实验环境 实验环境和上一篇的差不多&#xff0c;主要是加了个防火墙。 windows server2012 192.168.145.131&#xff08;外网&#xff09; 192.168.22.134&…

【NumPy】关于numpy.flatten()函数,看这一篇文章就够了

&#x1f9d1; 博主简介&#xff1a;阿里巴巴嵌入式技术专家&#xff0c;深耕嵌入式人工智能领域&#xff0c;具备多年的嵌入式硬件产品研发管理经验。 &#x1f4d2; 博客介绍&#xff1a;分享嵌入式开发领域的相关知识、经验、思考和感悟&#xff0c;欢迎关注。提供嵌入式方向…

头晕、心悸…你们小年轻配不上张俊杰的霸王茶姬,还要奔上市

近日&#xff0c;有多名网友在社交平台反映称&#xff0c;自己在喝了霸王茶姬的新品“万里木兰”奶茶后&#xff0c;出现了失眠、头晕、心悸等不同程度的不适症状&#xff0c;霸王茶姬方面则表示“可能是茶多酚过敏”。 而就在几天前举行的“2024年国际茶日现代东方茶创新论坛…

全局光照技术在AI去衣中的革命性角色

引言&#xff1a; 随着计算机视觉和深度学习技术的飞速发展&#xff0c;AI去衣技术已经逐渐成为图像处理和计算机图形学领域的一个热门话题。这种技术旨在通过算法模型去除或替换图像中的衣物&#xff0c;以服务于娱乐、电子商务、虚拟试衣等多种应用场景。而在实现高质量、真实…

getters的使用

getters的使用 如果state中的数据需要经过处理再使用&#xff0c;就可以利用getters函数

django在线考试系统-计算机毕业设计源码78268

摘 要 本论文主要论述了如何使用python语言、Django框架开发一个在线考试系统&#xff0c;本系统将严格按照软件开发流程&#xff0c;进行各个阶段的工作&#xff0c;面向对象编程思想进行项目开发。在引言中&#xff0c;作者将论述该系统的当前背景以及系统开发的目的&#xf…

VMware虚拟机上安装麒麟V10操作系统

一、安装VMware 在前面的文章中我有具体介绍过如何安装VMware软件&#xff0c;这里就不具体介绍了&#xff0c;需要的同学可以点下面的连接进行下载安装。 玩转Linux—如何在Linux环境中部署MySQL、Redis和nginx_linux系统mysql、redis 主备怎么做-CSDN博客文章浏览阅读1k次&a…

每日百万交易的支付系统,如何设置JVM堆内存大小?

每日百万交易的支付系统,如何设置JVM堆内存大小? 1、支付背景的引入2、支付的核心业务流程3、每日百万交易支付系统的压力在哪里?4、支付系统每秒钟需要处理多少笔支付单5、每个支付订单处理需要耗时多久6、每个支付订单大概需要多大的内存空间7、每秒发起的支付请求对内存的…

c#核心学习1

一、面向对象的概念 1.面向过程编程 2.面向对象编程 3.为什么要学习面向对象编程 提高代码复用率、提高开发效率、提高程序可拓展性、清晰的逻辑关系 4.如何学习 二、面向对象--封装 1&#xff09;类和对象 1.什么是类 2.类申明在哪里 类一般声明在namespace语句块中 3.…

电商API接口(api商品数据)【电商商品实时数据采集API接口】

众多品牌选择电商API实时数据采集接口进行采购&#xff0c;主要是出于以下几个重要原因&#xff1a; 第一&#xff0c;高效便捷。比价工具通过自动化的方式获取价格信息&#xff0c;避免了繁琐的人工操作&#xff0c;大大节省了时间和精力。 第二&#xff0c;精准比较。API比价…