Not
Bu sayfaya erişim yetkilendirme gerektiriyor. Oturum açmayı veya dizinleri değiştirmeyi deneyebilirsiniz.
Bu sayfaya erişim yetkilendirme gerektiriyor. Dizinleri değiştirmeyi deneyebilirsiniz.
Tip
Yazılım geliştirme konusunda yeni misiniz? İlk olarak Başlangıç öğreticileri ile başlayın. İlk programlarınızı yazarken ad alanlarını ve using yönergeleri tanıtırlar.
Başka bir dilde mi deneyimlisiniz? C# içindeki ad alanları Java'daki paketlere veya Python'daki modüllere benzer şekilde çalışır. İhtiyacınız olan söz dizimine hızlıca göz gezdirin.
Ad alanı bildirimleri ve using yönergeleri ilgili dil özellikleridir. Ad alanı bildirimi, türlerinizi düzenli bir yapıya yerleştirir. Ad alanı, ilgili türleri birlikte gruplandırır ve adlandırma çakışmalarını önler. Yönerge using , programınızın bu türleri basit adlarıyla kullanmasına olanak tanır. Her kullanımda tam ad alanı yolunu yazmanız gerekmez.
Yazdığınız her C# programında zaten ad alanlarını kullandınız. Her .NET türü bir ad alanına aittir ve dosyanın en üstündeki her using yönerge bir ad alanına başvurur. Örneğin, Console ve Math, System ad alanına aittir, bu yüzden tam nitelikli adları System.Console ve System.Math olur.
List<T> ve Dictionary<TKey, TValue> gibi koleksiyon türleri System.Collections.Generic aitidir. Bu ad alanlarının herhangi biri için tek using bir yönerge, tüm türlerine basit adlarıyla başvurmanızı sağlar. Her yerde List<T> yerine System.Collections.Generic.List<T> yazıyorsunuz.
Bu makale ad alanlarının ve using yönergelerin nasıl çalıştığı hakkında daha fazla arka plan sağlar ve .NET kitaplıklarında zaten karşılaştığınız desenlerin örneklerini gösterir.
Ad alanı türleri içerir. Her .NET türü bir ad alanına aittir. Örneğin, Task türünün System.Threading.Tasks ad alanına ait olduğunu düşünün.
İlgili veya benzer türleri aynı ad alanında gruplandırmak iyi bir uygulamadır ve .NET, sağladığı türlerle bunu yapar. Ad System.Collections.Generic alanı koleksiyonla ilgili türleri, System.IO ad alanı ise dosyaları, dizinleri ve verileri okuma ve yazma ile ilgili türleri içerir. Ad System alanı , Mathve DateTimegibi Consoletemel türleri içerir.
Aşağıdaki örnekte ad alanlarının tipik bir C# dosyasındaki yönergelerle using birlikte nasıl çalıştığı gösterilmektedir:
using System.Globalization;
namespace MyApp.Services;
class Greeter
{
public string Greet(string name)
{
var culture = CultureInfo.CurrentCulture;
return $"Hello, {name}! Culture: {culture.Name}";
}
}
Yukarıdaki örnekte, using yönergesi, System.Globalization.CultureInfo'nin tam adını belirtmeden CultureInfo adıyla System.Globalization.CultureInfo kullanabileceğiniz anlamına gelir.
namespace yönergesi, Greeter sınıfının MyApp.Services ad alanının bir parçası olduğunu bildirir. Tam nitelikli adı MyApp.Services.Greeter.
Ad alanı bildirimleri
Ad alanı bildirimi, türlerinizi adlandırılmış bir gruba atar. Yazdığınız her tür bir ad alanına ait olmalıdır. Ad alanı adı genellikle projenizin klasör yapısını yansıtır. Örneğin, bir Services/Payments klasördeki türler genellikle ad alanına MyApp.Services.Payments aittir.
Ad alanları hiyerarşiyi ifade etmek için . operatörünü kullanır, örneğin System.Collections.Generic. Ad alanı adları geçerli C# tanımlayıcı adları olmalıdır.
Dosya düzeyinde ad alanları
Bir dosyadaki tüm türler aynı ad alanına ait olduğunda dosya kapsamlı söz dizimini kullanın. Ad alanı bildiriminden sonra noktalı virgül eklediğinizde dosyanın tamamına uygulanır. Ek ayraç veya girintiye ihtiyacınız yoktur:
namespace MyApp.Models;
class Customer
{
public required string Name { get; init; }
public string? Email { get; init; }
public override string ToString() => $"{Name} ({Email ?? "no email"})";
}
Dosya kapsamlı ad alanları iç içe geçmeyi azaltır ve dosyaların okunmasını kolaylaştırır. Dosya başına yalnızca bir dosya kapsamlı ad alanı bildiriminiz olabilir.
Tip
Yeni kodda dosya kapsamlı ad alanlarını kullanın. Çoğu .NET şablonu ve kod çözümleyicisi bu stili önerir.
Blok kapsamlı ad alanları
Aynı dosyada birden fazla ad alanı bildirmeniz gerektiğinde blok kapsamlı söz dizimini kullanın. Bu stil ek bir girinti düzeyi ekler.
Önemli
Aynı dosyada birden fazla ad alanı bildirmek kötü uygulama olarak kabul edilir. En yaygın senaryo, dosya düzeyinde ad alanlarını kullanmaktır.
Aşağıdaki kod parçacığı blok kapsamlı bir ad alanı örneğidir:
namespace MyApp.Models
{
class Product
{
public required string Name { get; init; }
public decimal Price { get; init; }
public override string ToString() => $"{Name}: {Price:C}";
}
}
Yönergeleri kullanma
Bir yönerge using yoksa, her türe tam nitelikli adıyla - yani, tam ad alanı yolu ve tür adı ile - başvurmalısınız:
static void ShowFullyQualified()
{
// Without a using directive, use the fully qualified name:
System.Console.WriteLine("Hello from fully qualified name!");
}
Dosyanın using en üstündeki yönerge, ad alanını içeri aktararak türlerini basit adlarıyla kullanabilmenizi sağlar:
static void ShowShortName()
{
// With 'using System;' (or implicit usings enabled), use the short name:
Console.WriteLine("Hello from short name!");
}
Daha fazla bilgi için yönergesineusing bakın.
Genel kullanım yönergeleri
Her dosyaya aynı using yönergeleri yazarsanız, genel using yönergeleri bunları projenizin tamamı için bir kez bildirmenize olanak sağlar. Bunları herhangi bir dosyaya yerleştirin. Birçok ekip ayrılmış GlobalUsings.cs bir dosya oluşturur:
global using System.Text;
global using System.Text.Json;
Genel bir 'using' bildirimi yaptıktan sonra, projede yer alan her dosya ek using yönergesi olmadan kısa adlar kullanarak bu ad alanından türlere başvurabilir.
Gizli using direktifleri
.NET SDK'sı, proje türünüz temelinde en yaygın ad alanları için genel kullanım yönergelerini otomatik olarak oluşturur. Proje dosyanızda <ImplicitUsings>enable</ImplicitUsings> ayarını yaparak örtük kullanımları etkinleştirin. Örneğin, bir konsol uygulaması projesi otomatik olarak , System, System.Collections.Generic, System.IO, System.Linqve System.Threadingiçeri aktarırSystem.Threading.Tasks. Mevcut SDK, ImplicitUsings kullanılarak yeni bir proje oluşturulduğunda dotnet new etkinleştirir.
Daha fazla bilgi için bkz. Örtük kullanım yönergeleri.
Statik kullanım yönergeleri
Yönerge static using , tür adı ön eki olmadan çağırabilmeniz için türün statik üyelerini içeri aktarır:
using static System.Math;
namespace MyApp.Utilities;
class CircleCalculator
{
public static double CalculateArea(double radius) => PI * Pow(radius, 2);
public static double CalculateCircumference(double radius) => 2 * PI * radius;
}
Statik kullanımlar gibi Math ve Console sık çağırdığınız yardımcı program sınıfları için iyi çalışır.
Türler ve ad alanları için takma adlar
Bir using takma ad, bir tür veya ad alanı için kısa bir ad oluşturur. Diğer adlar, uzun genel türler, adlandırma çakışmalarını çözümleme ve okunabilirliği geliştirme için kullanışlıdır:
using CustomerList = System.Collections.Generic.List<MyApp.Models.Customer>;
namespace MyApp.Services;
class CustomerService
{
public CustomerList GetTopCustomers()
{
CustomerList customers = [new() { Name = "Alice" }, new() { Name = "Bob" }];
return customers;
}
}
C# 12'den itibaren, demetler ve işaretçi türleri de dahil olmak üzere herhangi bir türe takma ad verebilirsiniz.
using Point = (double X, double Y);
namespace MyApp.Geometry;
class Shape
{
public static double Distance(Point a, Point b)
{
var dx = a.X - b.X;
var dy = a.Y - b.Y;
return Math.Sqrt(dx * dx + dy * dy);
}
}
Daha gelişmiş senaryolarda, iki derlemenin aynı tam nitelikli tür adını tanımladığı durumlarda, belirsizliği gidermek amacıyla extern alias kullanın.