返回顶部
首页 > 资讯 > 后端开发 > 其他教程 >如何在C#9 中使用顶级程序 (top-level)
  • 465
分享到

如何在C#9 中使用顶级程序 (top-level)

2024-04-02 19:04:59 465人浏览 八月长安
摘要

目录顶级程序顶级程序中的方法顶级程序中的类顶级程序的原理分析当我们用 C# 进行编码的时候,总需要写很多的模板代码,即使是最简单的 console 程序,想象一下,如果去测试一个 类

当我们用 C# 进行编码的时候,总需要写很多的模板代码,即使是最简单的 console 程序,想象一下,如果去测试一个 类库 或者 api 的功能,通常你会用 Console 程序去实现,在开始工作的时候会发现你受到了 C# 标准模板的限制,业务逻辑必须要写在 Main 里,如下代码所示:


    class Program
    {
        static void Main(string[] args)
        {
            //todo
        }
    }

顶级程序 是 C#9 中引入的一个新概念,允许你直接写自己的业务逻辑而不必受到模板代码的限制,顶级程序 是一个非常🐂👃的特性,可以让代码更加的干净,简短和可读,你可以通过顶级程序去探索新的 idea,这篇文章将会讨论如何在 C#9 中使用顶级程序。

顶级程序

在 C# 9.0 之前,下面的写法在 Console 程序中已经是最小化的了。


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

在 C# 9.0 时代,可以祭出 顶级程序 来消除那些烦人的模板代码,让代码的逻辑意图更明显,改造后的代码如下:


using System;
Console.WriteLine("Hello World!");

顶级程序中的方法

你也可以在顶级程序中使用方法,如下例子所示:


System.Console.WriteLine(DisplayMessage("Joydip!"));
System.Console.Read();
static string DisplayMessage(string name)
{
    return "Hello, " + name;
}

程序跑起来后,控制台将会输出:Hello, Joydip!

顶级程序中的类

你也可以在顶级程序中使用类,结构体,枚举,下面的代码展示了如何使用。


System.Console.WriteLine(new Author().DisplayMessage("Joydip!"));
System.Console.Read();
public class Author
{
    public string DisplayMessage(string name)
    {
        return "Hello, " + name;
    }
}

顶级程序的原理分析

现在我们来分析一下,顶级程序的底层逻辑到底是怎么样的,它本质上是一种语法糖,一种编译器的特性,也就是说你没有写模板代码的时候,编译器会帮你生成,替你负重前行,参考下面的代码段。


using System;
Console.WriteLine("Hello World!");

然后用在线工具 SharpLab https://sharplab.io/  看一下编译器替你补齐的代码。


using System;
using System.Diagnostics;
using System.Reflection;
using System.Runtime.CompilerServices;
using System.Security;
using System.Security.Permissions;
[assembly: CompilationRelaxations(8)]
[assembly: RuntimeCompatibility(WrapNonExceptionThrows = true)]
[assembly: Debuggable(DebuggableAttribute.DebuggingModes.Default | DebuggableAttribute.DebuggingModes.DisableOptimizations | DebuggableAttribute.DebuggingModes.IgnoreSymbolStoreSequencePoints | DebuggableAttribute.DebuggingModes.EnableEditAndContinue)]
[assembly: SecurityPermission(SecurityAction.RequestMinimum, SkipVerification = true)]
[assembly: AssemblyVersion("0.0.0.0")]
[module: UnverifiableCode]
[CompilerGenerated]
internal static class <Program>$
{
    private static void <Main>$(string[] args)
    {
        Console.WriteLine("Hello World!");
    }
}

总的来说,顶级程序 非常适合那些想 快速试错,验证想法 的场景,有一点要特别注意,应用程序中只能仅有一个文件使用 顶级程序,如果存在多个,编译器会抛出错误的,还有一点,如果你是 C# 新手,你可能不理解顶级程序的底层逻辑,更好的方式就是老老实实的使用原生模板代码,当你主宰了 Main 后,你将会理解 顶级程序 是多么的短小精悍!

以上就是如何在C#9 中使用顶级程序 (top-level)的详细内容,更多关于C#9 中使用顶级程序 (top-level)的资料请关注编程网其它相关文章!

--结束END--

本文标题: 如何在C#9 中使用顶级程序 (top-level)

本文链接: https://lsjlt.com/news/122674.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

猜你喜欢
  • 如何在C#9 中使用顶级程序 (top-level)
    目录顶级程序顶级程序中的方法顶级程序中的类顶级程序的原理分析当我们用 C# 进行编码的时候,总需要写很多的模板代码,即使是最简单的 console 程序,想象一下,如果去测试一个 类...
    99+
    2024-04-02
  • top-level如何在C#9 中使用
    本篇文章为大家展示了top-level如何在C#9 中使用,内容简明扼要并且容易理解,绝对能使你眼前一亮,通过这篇文章的详细介绍希望你能有所收获。顶级程序在 C# 9.0 之前,下面的写法在 Console 程序中已经是最小化的了。usin...
    99+
    2023-06-14
  • 如何在C#9 中使用static匿名函数
    目录匿名方法的代价C#9 中使用静态匿名方法匿名函数 在 C# 中已经出现很多年了,虽然匿名函数用起来很爽,但代价是不小的,为了避免不必要那些你意想不到的内存分配,这就是为什么 C#...
    99+
    2024-04-02
  • 如何在linux中使用top命令
    如何在linux中使用top命令?很多新手对此不是很清楚,为了帮助大家解决这个难题,下面小编将为大家详细讲解,有这方面需求的人可以来学习下,希望你能有所收获。1.命令格式:top [参数]2.命令功能:显示当前系统正在执行的进程的...
    99+
    2023-06-13
  • 如何在CSS中使用position:fixed和margin-top
    这期内容当中小编将会给大家带来有关如何在CSS中使用position:fixed和margin-top,文章内容丰富且以专业的角度为大家分析和叙述,阅读完这篇文章希望大家可以有所收获。问题描述想用CSS实现顶部固定的效果:尝试margin-...
    99+
    2023-06-08
  • 如何在CentOS中使用top命令查看CPU
    今天就跟大家聊聊有关如何在CentOS中使用top命令查看CPU,可能很多人都不太了解,为了让大家更加了解,小编给大家总结了以下内容,希望大家根据这篇文章可以有所收获。  在命令行中输入 “top” 即可启动 top ,运行后如下图所示: ...
    99+
    2023-06-10
  • 如何在 ASP 程序中使用 HTTP 容器的高级功能?
    在ASP程序中,使用HTTP容器的高级功能可以帮助我们更好地处理HTTP请求和响应。本文将介绍如何在ASP程序中使用HTTP容器的高级功能,包括会话管理、Cookie处理、文件上传、HTTP认证等。 一、会话管理 会话是指在客户端和服务器之...
    99+
    2023-06-03
    日志 http 容器
  • 如何在C++中使用 STL 顺序容器
    今天就跟大家聊聊有关如何在C++中使用 STL 顺序容器,可能很多人都不太了解,为了让大家更加了解,小编给大家总结了以下内容,希望大家根据这篇文章可以有所收获。C++ 标准模板库 STL 顺序容器容器数据结构顺序性重复性支持迭代器vecto...
    99+
    2023-06-15
  • 如何在ASP.NET应用程序中使用npm?
    ASP.NET是一种流行的Web应用程序框架,它使用.NET Framework和C#编程语言。随着Web开发的发展,前端技术也逐渐成为Web应用程序开发的重要组成部分。npm是Node.js的包管理器,它为前端开发人员提供了大量的Java...
    99+
    2023-09-28
    git npm django
  • Golang - 返回的 JSON 顶级字段是可变的。如何在结构体中使用
    问题内容 我有一个来自 API 的 JSON 响应,如下所示: { "1091500": { "data": { "price_overview":...
    99+
    2024-02-06
  • 如何使用Go在Shell中运行程序?
    Go语言是一种开发高效、高可靠性和高性能软件的编程语言,它具有静态类型、垃圾收集和并发编程等特性。如果您想在Shell中使用Go语言运行程序,这篇文章将为您提供一些基本的指导和步骤。 安装Go语言环境 在开始使用Go语言编写程序之前,...
    99+
    2023-06-14
    shell ide path
  • 如何在微信小程序中使用echart
    如何在微信小程序中使用echart?针对这个问题,这篇文章详细介绍了相对应的分析和解答,希望可以帮助更多想解决这个问题的小伙伴找到更简单易行的方法。首先到ECharts官网下载我放的是tool文件夹下面,你们随意引入的时候注意路径就行2.使...
    99+
    2023-06-15
  • echart在微信小程序中如何使用
    今天小编给大家分享一下echart在微信小程序中如何使用的相关知识点,内容详细,逻辑清晰,相信大部分人都还太了解这方面的知识,所以分享这篇文章给大家参考一下,希望大家阅读完这篇文章后有所收获,下面我们一起来了解一下吧。echarts不显示在...
    99+
    2023-07-05
  • 如何在ASP.Net Core应用程序中使用Bootstrap4
    本篇内容介绍了“如何在ASP.Net Core应用程序中使用Bootstrap4”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!笔者...
    99+
    2023-06-26
  • 如何在C# 中使用 FFmpeg.NET
    FFmpeg 是一套可以用来记录、转换数字音频、视频,并能将其转化为流的开源计算机程序。采用 LGPL 或 GPL 许可证。它提供了录制、转换以及流化音视频的完整解决方案。它包含了非...
    99+
    2024-04-02
  • 如何在C#中使用Filewatcher
    要在C#中使用FileWatcher,首先需要创建一个FileWatcher对象,并设置所需的属性和事件处理程序。以下是一个简单的示...
    99+
    2023-09-27
    C#
  • mac中如何使用vsode愉快地运行C、C++程序
    闲来无事,想在mac中写写C/C++程序,打开应用商店,准备下个xcode玩玩,结果小30G的空间占用直接劝退。因为一直使用vscode开发,便萌生了使用插件来运行C/C++程序的想法,也就有了这篇文...
    99+
    2023-10-20
    macos c语言 c++
  • 如何使用Dev C++编写C语言程序
    本篇内容介绍了“如何使用Dev C++编写C语言程序”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!C语言是什么C语言是一门面向过程的、抽象化...
    99+
    2023-06-08
  • 如何在C++中创建多租户Web应用程序?
    在 c++++ 中构建多租户 web 应用程序涉及将每个租户的数据隔离起来。这可以通过两种主要方法实现:使用容器(如无序映射)或使用范围隔离(限制变量的作用域)。容器方法在容器中存储每个...
    99+
    2024-05-11
    c++ 多租户 作用域 键值对
  • 如何在Go应用程序中使用NPM缓存?
    当我们在编写使用 Node.js 的 Go 应用程序时,经常会用到 NPM 包管理器来安装、更新和管理依赖项。但是,在使用 NPM 过程中,我们可能会遇到一些问题,例如网络连接较慢、依赖项版本更新导致构建失败等等。为了解决这些问题,我们可以...
    99+
    2023-10-07
    npm 缓存 load
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作