namespace
anahtar sözcüğü
anahtar namespace
sözcüğü, ilgili nesneler kümesini içeren bir kapsamı bildirmek için kullanılır. Kod öğelerini düzenlemek ve genel olarak benzersiz türler oluşturmak için bir ad alanı kullanabilirsiniz.
namespace SampleNamespace
{
class SampleClass { }
interface ISampleInterface { }
struct SampleStruct { }
enum SampleEnum { a, b }
delegate void SampleDelegate(int i);
namespace Nested
{
class SampleClass2 { }
}
}
Dosya kapsamlı ad alanı bildirimleri , bir dosyadaki tüm türlerin tek bir ad alanında olduğunu bildirmenizi sağlar. Aşağıdaki örnek önceki örneğe benzer, ancak dosya kapsamlı bir ad alanı bildirimi kullanır:
using System;
namespace SampleFileScopedNamespace;
class SampleClass { }
interface ISampleInterface { }
struct SampleStruct { }
enum SampleEnum { a, b }
delegate void SampleDelegate(int i);
Dosya Kapsamlı Ad Alanları içinde Deyimleri Kullanma
using
aşağıdaki gibi belirler:
-
using
deyimleri dosya kapsamlı ad alanı bildiriminden önce yerleştirilirse, bunlar ad alanının dışında kabul edilir ve tam nitelikli ad alanları olarak yorumlanır. -
using
deyimleri dosya kapsamlı ad alanı bildiriminden sonra yerleştirilirse, bunların kapsamı ad alanının kendi içindedir.
Örneğin:
// 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...
}
Yukarıdaki örnekte, System
genel olarak erişilebilirken, System.Text
yalnızca SampleNamespace
içinde geçerlidir.
Yukarıdaki örnekte iç içe bir ad alanı yoktur. Dosya kapsamlı ad alanları daha fazla ad alanı bildirimi içeremez. İç içe bir ad alanı veya ikinci bir dosya düzeyinde ad alanı bildiremezsiniz.
namespace SampleNamespace;
class AnotherSampleClass
{
public void AnotherSampleMethod()
{
System.Console.WriteLine(
"SampleMethod inside SampleNamespace");
}
}
namespace AnotherNamespace; // Not allowed!
namespace ANestedNamespace // Not allowed!
{
// declarations...
}
Bir ad alanı içinde, aşağıdaki türlerden sıfır veya daha fazlasını bildirebilirsiniz:
- class
- interface
- struct
- enum
- delegate
- dosya kapsamlı ad alanı bildirimleri dışında iç içe yerleştirilmiş ad alanları bildirilebilir
Derleyici varsayılan bir ad alanı ekler. Bazen genel ad alanı olarak da adlandırılan bu adsız ad alanı her dosyada bulunur. Bildirilen ad alanına dahil olmayan bildirimleri içerir. Genel ad alanı içindeki tüm tanımlayıcılar adlandırılmış ad alanında kullanılabilir.
Ad alanlarının örtük olarak genel erişimi vardır. Ad alanındaki öğelere atayabileceğiniz erişim değiştiricilerinin tartışması için bkz . Erişim Değiştiricileri.
İki veya daha fazla bildirimde ad alanı tanımlamak mümkündür. Örneğin, aşağıdaki örnek ad alanının bir parçası MyCompany
olarak iki sınıfı tanımlar:
namespace MyCompany.Proj1
{
class MyClass
{
}
}
namespace MyCompany.Proj1
{
class MyClass1
{
}
}
Aşağıdaki örnekte, iç içe bir ad alanında statik yöntemin nasıl çağrılacakları gösterilmektedir.
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
C# dili belirtimi
Daha fazla bilgi için C# dil belirtiminin Ad Alanları bölümüne bakın. Dosya kapsamlı ad alanı bildirimleri hakkında daha fazla bilgi için özellik belirtimine bakın.