1. 程式人生 > >C#指南,重溫基礎,展望遠方!(2)程序結構

C#指南,重溫基礎,展望遠方!(2)程序結構

system 兩個 -h static 說明 所有 順序 HR 相互

C# 中的關鍵組織結構概念包括程序命名空間類型成員程序集C# 程序由一個或多個源文件組成。 程序聲明類型,而類型則包含成員,並被整理到命名空間中。 類型示例包括類和接口。 成員示例包括字段、方法、屬性和事件。 編譯完的 C# 程序實際上會打包到程序集中。 程序集的文件擴展名通常為 .exe.dll,具體取決於實現的是應用程序還是

以下示例在 Acme.Collections 命名空間中聲明 Stack 類:

C#
using System;
namespace Acme.Collections
{
    public class Stack
    {
        Entry top;
        public void Push(object data) 
        {
            top = new Entry(top, data);
        }

        public object Pop() 
        {
            if (top == null)
            {
                throw new InvalidOperationException();
            }
            object result = top.data;
            top = top.next;
            return result;
        }
        
        class Entry
        {
            public Entry next;
            public object data;
            public Entry(Entry next, object data)
            {
                this.next = next;
                this.data = data;
            }
        }
    }
}

此類的完全限定的名稱為 Acme.Collections.Stack此類包含多個成員:一個 top 字段、兩個方法(PushPop)和一個 Entry 嵌套類。 Entry 類還包含三個成員:一個 next 字段、一個 data 字段和一個構造函數。 假定示例的源代碼存儲在 acme.cs 文件中,以下命令行

csc /t:library acme.cs

將示例編譯成庫(不含 Main 入口點的代碼),並生成 acme.dll 程序集。

重要

上述示例使用 csc 作為命令行 C# 編譯器。 此編譯器是 Windows 可執行文件。 若要在其他平臺上使用 C#,應使用 .NET Core 工具。 .NET Core 生態系統使用 dotnet

CLI 來管理命令行生成。 這包括管理依賴項和調用 C# 編譯器。 有關在 .NET Core 支持的平臺上使用這些工具的完整說明,請參閱這篇教程。

程序集包含中間語言 (IL) 指令形式的可執行代碼和元數據形式的符號信息。 執行前,程序集中的 IL 代碼會被 .NET 公共語言運行時的實時 (JIT) 編譯器自動轉換成處理器專屬代碼。

由於程序集是包含代碼和元數據的自描述功能單元,因此無需在 C# 中使用 #include 指令和頭文件。 只需在編譯程序時引用特定的程序集,即可在 C# 程序中使用此程序集中包含的公共類型和成員。 例如,此程序使用 acme.dll 程序集中的 Acme.Collections.Stack

類:

C#
using System;
using Acme.Collections;
class Example
{
    static void Main() 
    {
        Stack s = new Stack();
        s.Push(1);
        s.Push(10);
        s.Push(100);
        Console.WriteLine(s.Pop());
        Console.WriteLine(s.Pop());
        Console.WriteLine(s.Pop());
    }
}

如果程序存儲在文件 example.cs 中,那麽在 example.cs 編譯完後,可以使用編譯器的 /r 選項引用 acme.dll 程序集:

csc /r:acme.dll example.cs

這會創建 example.exe 可執行程序集,它將在運行時輸出以下內容:

100
10
1

使用 C#,可以將程序的源文本存儲在多個源文件中。 編譯多文件 C# 程序時,可以將所有源文件一起處理,並且源文件可以隨意相互引用。從概念上講,就像是所有源文件在處理前被集中到一個大文件中一樣。 在 C# 中,永遠都不需要使用前向聲明,因為聲明順序無關緊要(除了極少數的例外情況)。 C# 並不限制源文件只能聲明一種公共類型,也不要求源文件的文件名必須與其中聲明的類型相匹配。

C#指南,重溫基礎,展望遠方!(2)程序結構