最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

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

 更新時間:2021年03月31日 11:50:39   作者:碼農(nóng)讀書  
這篇文章主要介紹了如何在C#9 中使用頂級程序 (top-level),幫助大家更好的理解和學(xué)習(xí)使用c#,感興趣的朋友可以了解下

當(dāng)我們用 C# 進(jìn)行編碼的時候,總需要寫很多的模板代碼,即使是最簡單的 console 程序,想象一下,如果去測試一個 類庫 或者 API 的功能,通常你會用 Console 程序去實(shí)現(xiàn),在開始工作的時候會發(fā)現(xiàn)你受到了 C# 標(biāo)準(zhǔn)模板的限制,業(yè)務(wù)邏輯必須要寫在 Main 里,如下代碼所示:

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

頂級程序 是 C#9 中引入的一個新概念,允許你直接寫自己的業(yè)務(wù)邏輯而不必受到模板代碼的限制,頂級程序 是一個非常🐂👃的特性,可以讓代碼更加的干凈,簡短和可讀,你可以通過頂級程序去探索新的 idea,這篇文章將會討論如何在 C#9 中使用頂級程序。

頂級程序

在 C# 9.0 之前,下面的寫法在 Console 程序中已經(jīng)是最小化的了。

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!

頂級程序中的類

你也可以在頂級程序中使用類,結(jié)構(gòu)體,枚舉,下面的代碼展示了如何使用。

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

頂級程序的原理分析

現(xiàn)在我們來分析一下,頂級程序的底層邏輯到底是怎么樣的,它本質(zhì)上是一種語法糖,一種編譯器的特性,也就是說你沒有寫模板代碼的時候,編譯器會幫你生成,替你負(fù)重前行,參考下面的代碼段。

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

然后用在線工具 SharpLab https://sharplab.io/  看一下編譯器替你補(bǔ)齊的代碼。

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!");
    }
}

總的來說,頂級程序 非常適合那些想 快速試錯,驗(yàn)證想法 的場景,有一點(diǎn)要特別注意,應(yīng)用程序中只能僅有一個文件使用 頂級程序,如果存在多個,編譯器會拋出錯誤的,還有一點(diǎn),如果你是 C# 新手,你可能不理解頂級程序的底層邏輯,更好的方式就是老老實(shí)實(shí)的使用原生模板代碼,當(dāng)你主宰了 Main 后,你將會理解 頂級程序 是多么的短小精悍!

以上就是如何在C#9 中使用頂級程序 (top-level)的詳細(xì)內(nèi)容,更多關(guān)于C#9 中使用頂級程序 (top-level)的資料請關(guān)注腳本之家其它相關(guān)文章!

相關(guān)文章

  • C#實(shí)現(xiàn)UI控件輸出日志的方法詳解

    C#實(shí)現(xiàn)UI控件輸出日志的方法詳解

    一般情況下,我們的日志文件是用來記錄一些關(guān)鍵操作或者異常,并且是后臺存儲,并不對外開放的,但是也有些時候,需要將一些操作步驟、記錄等直接顯示在窗體上。本文就將利用UI控件輸出日志效果,需要的可以參考一下
    2022-10-10
  • C#連接SQL Server的實(shí)現(xiàn)方法

    C#連接SQL Server的實(shí)現(xiàn)方法

    這篇文章主要給大家介紹了關(guān)于C#連接SQL Server的實(shí)現(xiàn)方法,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2018-12-12
  • C#實(shí)現(xiàn)SMTP服務(wù)發(fā)送郵件的示例代碼

    C#實(shí)現(xiàn)SMTP服務(wù)發(fā)送郵件的示例代碼

    這篇文章主要為大家詳細(xì)介紹了如何利用C#實(shí)現(xiàn)SMTP服務(wù)發(fā)送郵件的功能,文中的示例代碼講解詳細(xì),對我們學(xué)習(xí)C#有一定的幫助,感興趣的小伙伴可以跟隨小編一起了解一下
    2022-12-12
  • c#中String類型的存儲原理詳解

    c#中String類型的存儲原理詳解

    本文主要介紹了c#中String類型的存儲原理詳解,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2022-04-04
  • C#實(shí)現(xiàn)裝飾器模式

    C#實(shí)現(xiàn)裝飾器模式

    這篇文章介紹了C#實(shí)現(xiàn)裝飾器模式的方法,文中通過示例代碼介紹的非常詳細(xì)。對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2022-07-07
  • 如何獲取C#中方法的執(zhí)行時間以及其代碼注入詳解

    如何獲取C#中方法的執(zhí)行時間以及其代碼注入詳解

    這篇文章主要給大家介紹了關(guān)于如何獲取C#中方法的執(zhí)行時間以及其代碼注入的相關(guān)資料,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面來一起看看吧
    2018-11-11
  • C#實(shí)現(xiàn)的簡單整數(shù)四則運(yùn)算計算器功能示例

    C#實(shí)現(xiàn)的簡單整數(shù)四則運(yùn)算計算器功能示例

    這篇文章主要介紹了C#實(shí)現(xiàn)的簡單整數(shù)四則運(yùn)算計算器功能,涉及C#界面布局、事件響應(yīng)及數(shù)值運(yùn)算等相關(guān)操作技巧,需要的朋友可以參考下
    2017-09-09
  • C#關(guān)于Task.Yeild()函數(shù)的討論

    C#關(guān)于Task.Yeild()函數(shù)的討論

    這篇文章主要介紹了C#中關(guān)于Task.Yeild()函數(shù)的相關(guān)資料,文中講解非常細(xì)致,幫助大家更好的理解和學(xué)習(xí),感興趣的朋友可以了解下
    2020-07-07
  • C#中SQL Command的基本用法

    C#中SQL Command的基本用法

    今天小編就為大家分享一篇關(guān)于C#中SQL Command的基本用法,小編覺得內(nèi)容挺不錯的,現(xiàn)在分享給大家,具有很好的參考價值,需要的朋友一起跟隨小編來看看吧
    2018-10-10
  • c#中GetType()與Typeof()的區(qū)別

    c#中GetType()與Typeof()的區(qū)別

    c#中GetType()與Typeof()的區(qū)別,需要的朋友可以參考一下
    2013-04-04

最新評論

惠水县| 崇仁县| 唐山市| 闻喜县| 扬州市| 云梦县| 嘉祥县| 卢湾区| 苏尼特右旗| 丰宁| 孝义市| 互助| 基隆市| 韶关市| 项城市| 浮梁县| 新巴尔虎左旗| 福鼎市| 三河市| 罗平县| 韶关市| 七台河市| 东港市| 岑巩县| 来凤县| 五寨县| 东安县| 永和县| 安陆市| 宁蒗| 鹤峰县| 正宁县| 邵阳市| 宣武区| 炎陵县| 新和县| 富锦市| 北海市| 北辰区| 漳浦县| 雅安市|