程式的進入點

Main 函式

程式的進入點

每一支 C# 程式都必須包含一個類別,該類別內要有名為 Main 的函式。前面範例所展示的程式碼中,這個函式定義在名為 Program 的類別裡。

不過新版的 C# 提供頂層陳述式功能,不用手動撰寫 Main 函式,直接書寫的程式碼預設就等同 Main 的函式主體。

  • C# 程式的執行起點,是 Main 函式內第一行程式指令。
  • 函式名稱 Main 開頭的 M 一定要大寫。

Main 函式最精簡寫法:

static void Main( )
{
    程式陳述
}Code language: JavaScript (javascript)

專案裡不能沒有 Main 函式,也不能同時存在多個,有且僅能有一個。

為方便各位實作示範,我們使用 VS2022 建立僅支援 Windows 平台的 .NET Framework 專案。

請選擇下方的主控台應用程式範本。

框架版本部分,我們選用最新的 .NET 4.8.1。

新建專案後,Program.cs 預設內容如下

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace HelloDemo
{
    internal class Program
    {
        static void Main(string[] args)
        {
        }
    }
}
Code language: PHP (php)

開頭數行用來匯入多個命名空間,我們就能使用這些命名空間內建的各種類別,這些都是 .NET 原生提供的型別。

接著在 Main 函式內輸入一行程式碼:

Console.WriteLine(“hello foxdevelop.com”);

點擊 Visual Studio 上方綠色三角形「Start」按鈕執行程式。

程式執行時,預設會跑 Main 裡的第一行程式碼。

如果複製一份 Main 函式貼上,畫面會立刻出現錯誤標記

錯誤原因:同一個命名空間下不能存在同名函式。那我們建立兩個不同命名空間試試看。

此時程式碼不會出現紅色波浪底,看似正常,但嘗試編譯專案

點擊 Start

編譯依舊報錯,底部的錯誤清單(Error List)面板會顯示詳細錯誤資訊

若介面沒顯示 Error List 面板,可從頂部功能表開啟。

錯誤清單會標示出程式碼出錯的位置

空白字元(Whitespace)

程式碼中的空白字元指不會產生可見輸出的符號。編譯器會忽略原始碼內所有空白,開發者加入空白只是為了讓程式結構清晰、方便閱讀。
常見空白字元包含:

  • 半形空白(Space)
  • 定位字元(Tab)
  • 換行字元(New line)
  • 歸位字元(Carriage return)

範例:下方兩段程式碼排版差異極大,但編譯器會視為完全相同的邏輯

// 整齊排版版本
Main()
{
    Console.WriteLine("Hi, there!");
}

// 緊縮連寫版本
Main(){Console.WriteLine("Hi, there!");}Code language: JavaScript (javascript)

以下是格式正常的 Main 函式

        static void Main(string[] args)
        {
            Console.WriteLine("hello foxdevelop.com");
        }Code language: JavaScript (javascript)

我們把所有空白全部刪除、壓縮成一行,程式依舊能正常編譯,對編譯器來說兩者沒有任何區別。

static void Main(string[] args){Console.WriteLine("hello foxdevelop.com");}Code language: JavaScript (javascript)

陳述式(Statements)

C# 的陳述式語法與 C、C++ 相近。本章先介紹陳述式通用規則,各類特殊陳述後續會詳細說明。
陳述式是單行原始碼指令,用來定義資料型別或是命令程式執行特定操作。
簡單陳述必須以分號 ; 作結尾。下方兩行連續簡單陳述:第一行宣告整數變數 var1 並賦值 5;第二行將變數數值輸出至主控台視窗。

int var1 = 5;
System.Console.WriteLine("The value of var1 is {0},welcome to foxdevelop.com", var1);Code language: JavaScript (javascript)

上面 Main 範例包含兩行陳述,先前示範都只有單行。第一段程式碼建立名為 var1 的整數變數,存入數值 5;第二行輸出文字到主控台,文字內的 {0} 是佔位符,會自動替換成後方 var1 的數值。

程式碼區塊(Blocks)

程式碼區塊由一組成對大括號包覆零至多筆陳述式,語法上會被視作單一陳述處理。

將上例兩行陳述包進一對大括號,就構成完整程式碼區塊:

            {
                int var1 = 5;
                System.Console.WriteLine("The value of var1 is {0},welcome to foxdevelop.com", var1);
            }Code language: JavaScript (javascript)

程式碼區塊核心規則:

  1. 當語法只允許單一陳述,但業務邏輯需要多個操作時,使用區塊把所有程式碼包覆。
  2. 部分語法結構強制要求使用程式碼區塊,無法只用單行陳述取代。
  3. 簡單陳述末尾要加分號,但程式碼區塊結尾不須加分號。(編譯器允許在 } 後補分號,只會解讀為空陳述,屬不規範寫法)

圖解說明:

{
    int var2 = 5; // 單筆陳述結尾需加分號
    System.Console.WriteLine("The value of var1 is {0}", var1); // 單筆陳述結尾需加分號
} // 大括號結尾不加結尾分號Code language: JavaScript (javascript)

一般獨立陳述的結尾都需要加上 ;

以下完整範例可直接複製執行

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace HelloDemo
{
    internal class Program
    {
        static void Main(string[] args)
        {
            {
                int var1 = 5;
                System.Console.WriteLine("The value of var1 is {0},welcome to foxdevelop.com", var1);
            }; ; ; ;
        }
    }
}
Code language: C# (cs)

發佈留言

發佈留言必須填寫的電子郵件地址不會公開。 必填欄位標示為 *