共用方式為


原始程式檔慣例 (C# 與 Java 的比較)

更新:2007 年 11 月

包含 C# 類別的檔案命名慣例與 Java 略有不同。在 Java 中,所有原始程式檔 (Source File) 的副檔名都是 .java。每個原始程式檔都包括一個最上層的公用類別宣告,而且此類別名稱必須符合檔案名稱。換言之,使用公用範圍宣告的 Customer 類別在原始程式檔中必須以 Customer.java 這個名稱來定義。

C# 原始程式碼的副檔名則是 .cs。C# 與 Java 不同的是,原始程式檔可以包含一個以上最上層的公用類別宣告,而且其檔案名稱也不必符合任何類別名稱。

最上層宣告

不論是在 Java 還是在 C# 中,原始程式碼的開頭都是一些依照特定順序排列的最上層宣告。Java 和 C# 程式中所做的宣告只有一些差異。

Java 中的最上層宣告

在 Java 中,可以使用 package 關鍵字將類別群組起來。封裝類別必須在原始程式檔的第一個可執行列中使用 package 關鍵字。接下來是需要在其他封裝中存取類別的 import 陳述式,然後是類別宣告,如下所示:

package Acme;
import java.io.*;
class Customer
{
    ...
}

C# 中的最上層宣告

C# 使用命名空間的概念,透過 namespace 關鍵字來群組邏輯上相關的類別。這些與 Java 套件的作用方式類似,而且具有相同名稱的類別可能會出現在兩個不同的命名空間內。若要存取外部命名空間中所定義的類別,請在 using 指示詞後加上命名空間名稱,如下所示:

using System.IO;

namespace Acme 
{
    class Customer
    {
        // ...
    }
}

請注意,using 指示詞可放置在命名空間宣告內,在這種情況下,匯入的命名空間會是包含命名空間的一部分。

Java 不允許相同的原始程式檔中有多重封裝。但是,C# 允許在單一 .cs 檔案中有多重命名空間,如下所示:

namespace AcmeAccounting
{
    public class GetDetails
    {
        // ...
    }
}

namespace AcmeFinance
{
    public class ShowDetails
    {
        // ...
    }
}

完整名稱和命名空間別名

C# 和 Java 一樣,只要提供類別的完整名稱 (例如 DataSet 或上述範例中的 AcmeAccounting.GetDetails),不需使用命名空間的 using 參考,即可存取 .NET Framework 或使用者定義命名空間中的類别。

完整名稱可能會變得過於冗長而不易處理,在這種情況下,可以使用 using 關鍵字來指定簡短名稱或別名,以提升程式碼的可讀性。

下列程式碼將建立別名來參考由虛構公司撰寫的程式碼:

using DataTier = Acme.SQLCode.Client;

class OutputSales
{
    static void Main()
    {
        int sales = DataTier.GetSales("January");
        System.Console.WriteLine("January's Sales: {0}", sales);
    }
}

請注意,WriteLine 語法在格式字串中有 {x},其中 x 代表要在值引數清單中插入值的位置。假設 GetSales 方法傳回 500,應用程式的輸出將會如以下所示:

January's Sales: 500

前置處理器指示詞

與 C 和 C++ 類似,C# 中包含前置處理器指示詞所提供的功用,它可以條件式地略過原始程式檔的區段、報告錯誤和警告條件,並且區分來源程式碼中的特定區域。「前置處理器指示詞」一詞是為了維持與 C 和 C++ 程式語言的一致性而使用的,其實 C# 並沒有包含個別的前置處理步驟。如需詳細資訊,請參閱 C# 前置處理器指示詞

請參閱

概念

C# 程式設計手冊

其他資源

Java 開發人員可用的 C# 程式設計語言