namespace
Kata kunci namespace
digunakan untuk mendeklarasikan cakupan yang berisi sekumpulan objek terkait. Anda dapat menggunakan namespace layanan untuk mengatur elemen kode dan membuat jenis unik secara 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. Deklarasi namespace layanan cakupan file tersedia dengan C# 10. Contoh berikut ini mirip dengan contoh sebelumnya, tetapi menggunakan deklarasi namespace layanan cakupan file:
using System;
namespace SampleFileScopedNamespace;
class SampleClass { }
interface ISampleInterface { }
struct SampleStruct { }
enum SampleEnum { a, b }
delegate void SampleDelegate(int i);
Menggunakan Pernyataan dalam Namespace Lingkup File
Saat menggunakan namespace cakupan file, penempatan using
pernyataan memengaruhi cakupannya 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:
using
Jika pernyataan ditempatkan sebelum deklarasi namespace cakupan file, pernyataan tersebut diperlakukan sebagai berada di luar namespace layanan dan ditafsirkan sebagai namespace yang sepenuhnya memenuhi syarat.using
Jika pernyataan ditempatkan setelah deklarasi namespace cakupan file, pernyataan tersebut dilingkup 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 di atas, System
dapat diakses secara global, sementara System.Text
hanya berlaku dalam SampleNamespace
.
Contoh sebelumnya tidak menyertakan namespace layanan berlapis. Namespace layanan cakupan file tidak boleh menyertakan deklarasi namespace layanan tambahan. Anda tidak dapat mendeklarasikan namespace layanan berlapis atau namespace layanan cakupan 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:
- kelas
- antarmuka
- struktur
- enum
- delegasi
- namespace layanan berlapis dapat dideklarasikan kecuali dalam deklarasi namespace layanan cakupan file
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.