Bagikan melalui


Kata kunci namespace

namespace Gunakan kata kunci untuk mendeklarasikan cakupan yang berisi sekumpulan objek terkait. Gunakan namespace layanan untuk menata elemen kode dan untuk membuat jenis unik global.

namespace SampleNamespace
{
    class SampleClass { }

    interface ISampleInterface { }

    struct SampleStruct { }

    enum SampleEnum { a, b }

    delegate void SampleDelegate(int i);

    namespace Nested
    {
        class SampleClass2 { }
    }
}

Deklarasi namespace layanan cakupan file memungkinkan Anda mendeklarasikan bahwa semua jenis dalam file berada dalam satu namespace layanan. Contoh berikut mirip dengan contoh sebelumnya tetapi menggunakan deklarasi namespace lingkup file:

using System;

namespace SampleFileScopedNamespace;

class SampleClass { }

interface ISampleInterface { }

struct SampleStruct { }

enum SampleEnum { a, b }

delegate void SampleDelegate(int i);

Referensi bahasa C# mendokumentasikan versi bahasa C# yang paling baru dirilis. Ini juga berisi dokumentasi awal untuk fitur dalam pratinjau publik untuk rilis bahasa yang akan datang.

Dokumentasi mengidentifikasi fitur apa pun yang pertama kali diperkenalkan dalam tiga versi terakhir bahasa atau dalam pratinjau publik saat ini.

Petunjuk / Saran

Untuk menemukan kapan fitur pertama kali diperkenalkan di C#, lihat artikel tentang riwayat versi bahasa C#.

Menggunakan pernyataan dalam namespace cakupan file

Saat Anda menggunakan namespace dengan cakupan file , penempatan pernyataan using memengaruhi cakupannya di dalam file. Namespace yang dilingkup file lebih rendah ke deklarasi namespace tradisional yang setara yang berakhir dengan tanda kurung siku penutup di akhir file. Perilaku ini menentukan di mana using arahan diterapkan sebagai berikut:

  • Jika Anda menempatkan using pernyataan sebelum deklarasi namespace cakupan file, pernyataan tersebut diperlakukan sebagai berada di luar namespace layanan dan ditafsirkan sebagai namespace yang sepenuhnya memenuhi syarat.
  • Jika Anda menempatkan using pernyataan setelah deklarasi namespace cakupan file, pernyataan tersebut tercakup dalam namespace itu sendiri.

Contohnya:

// This using is outside the namespace scope, so it applies globally
using System;

namespace SampleNamespace; // File-scoped namespace declaration

// This using is inside the namespace scope
using System.Text;

public class SampleClass
{
    // Class members...
}

Dalam contoh sebelumnya, System dapat diakses secara global, sementara System.Text hanya berlaku dalam SampleNamespace.

Contoh sebelumnya tidak menyertakan namespace layanan berlapis. Namespace lingkup file tidak dapat menyertakan lebih banyak deklarasi namespace. Anda tidak dapat mendeklarasikan namespace berlapis atau namespace lingkup file kedua.

namespace SampleNamespace;

class AnotherSampleClass
{
    public void AnotherSampleMethod()
    {
        System.Console.WriteLine(
            "SampleMethod inside SampleNamespace");
    }
}

namespace AnotherNamespace; // Not allowed!

namespace ANestedNamespace // Not allowed!
{
   // declarations...
}

Dalam namespace layanan, Anda dapat mendeklarasikan nol atau lebih dari jenis berikut:

Kompilator menambahkan namespace layanan default. Namespace layanan tanpa nama ini, kadang-kadang disebut sebagai namespace layanan global, ada di setiap file. Ini berisi deklarasi yang tidak termasuk dalam namespace layanan yang dideklarasikan. Setiap pengidentifikasi di namespace layanan global tersedia untuk digunakan di namespace layanan bernama.

Namespace layanan secara implisit memiliki akses publik. Untuk diskusi tentang pengubah akses yang dapat Anda tetapkan ke elemen dalam namespace layanan, lihatPengubah Akses.

Dimungkinkan untuk menentukan namespace layanan dalam dua atau lebih deklarasi. Misalnya, contoh berikut menentukan dua kelas sebagai bagian dari namespace layanan MyCompany:

namespace MyCompany.Proj1
{
    class MyClass
    {
    }
}

namespace MyCompany.Proj1
{
    class MyClass1
    {
    }
}

Contoh berikut menunjukkan cara memanggil metode statik dalam namespace layanan berlapis.

namespace SomeNameSpace
{
    public class MyClass
    {
        static void Main()
        {
            Nested.NestedNameSpaceClass.SayHello();
        }
    }

    // a nested namespace
    namespace Nested
    {
        public class NestedNameSpaceClass
        {
            public static void SayHello()
            {
                Console.WriteLine("Hello");
            }
        }
    }
}
// Output: Hello

Spesifikasi bahasa C#

Untuk informasi selengkapnya, lihat bagian Namespace layanan dari spesifikasi bahasa C#. Untuk informasi selengkapnya tentang deklarasi namespace layanan cakupan file, lihat spesifikasi fitur.

Lihat juga