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.
tanımlayıcı bir türe (sınıf, arabirim, yapı, temsilci veya numaralandırma), üyeye, değişkene veya ad alanına atadığınız addır.
Bu makale, geçerli C# tanımlayıcıları için temel kuralları ve tutarlı, profesyonel kod yazmanıza yardımcı olmak için kullanılan adlandırma kurallarını kapsar.
Adlandırma kuralları
Geçerli tanımlayıcılar bu kurallara uymalıdır. C# derleyicisi, şu kurallara uymayan tüm tanımlayıcılar için bir hata oluşturur:
- Tanımlayıcılar bir harf veya alt çizgiyle başlamalıdır (
_). - Tanımlayıcılar Unicode harf karakterleri, ondalık basamak karakterleri, Unicode bağlanma karakterleri, Unicode birleştirme karakterleri veya Unicode biçimlendirme karakterleri içerebilir. Unicode kategorileri hakkında daha fazla bilgi için bkz. Unicode Kategori Veritabanı.
Tanımlayıcıdaki @ ön ekini kullanarak C# anahtar sözcükleriyle eşleşen tanımlayıcıları bildirebilirsiniz.
@ tanımlayıcı adının bir parçası değildir. Örneğin, @ififadlı bir tanımlayıcı bildirir. bu
Geçerli tanımlayıcıların tam tanımı için C# Dil Belirtimi
Önemli
C# dil belirtimi yalnızca harf (Lu, Ll, Lt, Lm veya Nl), rakam (Nd), bağlanma (Bilgisayar), birleştirme (Mn veya Mc) ve biçimlendirme (Cf) kategorilerine izin verir. Bunun dışındaki her şey _kullanılarak otomatik olarak değiştirilir. Bu, belirli Unicode karakterlerini etkileyebilir.
Adlandırma kuralları
Kurallara ek olarak, tanımlayıcı adları için kurallar .NET API'leri genelinde kullanılır. Bu kurallar adlar için tutarlılık sağlar, ancak derleyici bunların uygulanmasını zorunlu kılmaz. Projelerinizde farklı kuralları kullanabilirsiniz.
Kural gereği, C# programları tür adları, ad alanları ve tüm genel üyeler için PascalCase kullanır. Ayrıca, dotnet/docs ekibi .NET Çalışma Zamanı takımının kodlama stilibenimsenen aşağıdaki kuralları kullanır:
Arabirim adları büyük
Iile başlar.Öznitelik türleri
Attributesözcüğüyle biter.Sıralı türler, flagsızlar için tekil bir isim ve bayraklar için çoğul bir ad kullanır.
Tanımlayıcılar ardışık iki alt çizgi (
_) karakter içermemelidir. Bu adlar derleyici tarafından oluşturulan tanımlayıcılar için ayrılmıştır.Değişkenler, yöntemler ve sınıflar için anlamlı ve açıklayıcı adlar kullanın.
Kısalık yerine netliği tercih edin.
Sınıf adları ve yöntem adları için PascalCase kullanın.
Yöntem parametreleri ve yerel değişkenler için camelCase kullanın.
Hem alanlar hem de yerel sabitler olmak üzere sabit adlar için PascalCase kullanın.
Özel örnek alanları alt çizgiyle (
_) başlar ve kalan metin camelCased olur.Statik alanlar
s_ile başlar. Bu kural varsayılan Visual Studio davranışı veyaFramework tasarım yönergelerinin bir parçası değildir, ancakeditorconfig dosyasında yapılandırılabilir . Yaygın olarak bilinen ve kabul edilen kısaltmalar dışında adlarda kısaltma veya akronim kullanmaktan kaçının.
Anlamlı ve açıklayıcı ad alanları kullanın; bunlar, ters alan adı biçimini izlemelidir.
Derlemenin birincil amacını temsil eden derleme adlarını seçin.
Basit döngü sayaçları dışında tek harfli adları kullanmaktan kaçının. Ayrıca, C# yapılarının söz dizimini açıklayan söz dizimi örnekleri genellikle C# dil belirtiminde kullanılan kuralla eşleşen aşağıdaki tek harfli adlarıkullanır. Söz dizimi örnekleri kural için özel durumlardır.
- Yapılar için
S, sınıflar içinCkullanın. - Yöntemler için
Mkullanın. - Değişkenler için
v, parametreler içinpkullanın. -
rparametreleri içinrefkullanın.
- Yapılar için
Bahşiş
kod stili adlandırma kurallarını kullanarak, büyük harf kullanımı, önekler, sonekler ve sözcük ayırıcıları içeren adlandırma kurallarını
Aşağıdaki örneklerde, public olarak işaretlenen öğelerle ilgili yönergeler, protected ve protected internal öğeleriyle çalışırken de geçerlidir ve bunların tümü dış arayanlara görünür olması amaçlanmıştır.
Pascal Case
class, interface, structveya delegate türünü adlandırırken pascal casing ("PascalCasing") kullanın.
public class DataService
{
}
public record PhysicalAddress(
string Street,
string City,
string StateOrProvince,
string ZipCode);
public struct ValueCoordinate
{
}
public delegate void DelegateType(string message);
Bir interfaceadlandırırken, adın önüne bir Ieklemenin yanı sıra Pascal Kasası kullanın. Bu ön ek, tüketicilere bunun bir interfaceolduğunu açıkça gösterir.
public interface IWorkerQueue
{
}
Türlerin public üyelerini, alanlar, özellikler, olaylar gibi adlandırırken PascalCase yazım biçimini kullanın. Ayrıca, tüm yöntemler ve yerel işlevler için Pascal biçimi kullanın.
public class ExampleEvents
{
// A public field, these should be used sparingly
public bool IsValid;
// An init-only property
public IWorkerQueue WorkerQueue { get; init; }
// An event
public event Action EventProcessing;
// Method
public void StartEventProcessing()
{
// Local function
static int CountQueueItems() => WorkerQueue.Count;
// ...
}
}
Konum temelli kayıtlar yazarken, bunlar kaydın genel özellikleri olduğundan parametreler için pascal büyük/küçük harf stilini kullanın.
public record PhysicalAddress(
string Street,
string City,
string StateOrProvince,
string ZipCode);
Konumsal kayıtlar hakkında daha fazla bilgi için bkz.özellik tanımı için konumsal söz dizimi
Deve olayı
private veya internal alanlarını adlandırırken "camelCase" kullanın ve bunlara _öneki ekleyin. Temsilci türü örnekleri de dahil olmak üzere yerel değişkenleri adlandırırken deve kasası kullanın.
public class DataService
{
private IWorkerQueue _workerQueue;
}
Bahşiş
İfade tamamlamayı destekleyen bir IDE'de bu adlandırma kurallarını izleyen C# kodu düzenlenirken, _ yazıldığında nesne kapsamındaki tüm üyeler gösterilir.
static veya privateinternal alanlarıyla çalışırken, s_ ön ekini ve iş parçacığı statik kullanımı durumunda t_'ü kullanın.
public class DataService
{
private static IWorkerQueue s_workerQueue;
[ThreadStatic]
private static TimeSpan t_timeSpan;
}
Yöntem parametreleri yazarken camel casing kullanın.
public T SomeMethod<T>(int someNumber, bool isValid)
{
}
Birincil oluşturucu parametreleri
Birincil oluşturucu parametrelerini nasıl adlandırdığınız bildirilen türe bağlıdır:
ve
classtürleri içinstruct: Diğer yöntem parametreleriyle tutarlı olarak deve kasası kullanın.public class DataService(IWorkerQueue workerQueue, ILogger logger) { public void ProcessData() { // Use the parameters directly logger.LogInformation("Processing data"); workerQueue.Enqueue("data"); } }public struct Point(double x, double y) { public double Distance => Math.Sqrt(x * x + y * y); }Türler için
record: Parametreler genel özelliklere dönüştüğünde Pascal büyük/küçük harflerini kullanın.public record Person(string FirstName, string LastName); public record Address(string Street, string City, string PostalCode);
Birincil oluşturucular hakkında daha fazla bilgi için bkz . Birincil oluşturucular.
C# adlandırma kuralları hakkında daha fazla bilgi için .NET Çalışma Zamanı ekibinin kodlama stilibakın.
Tür parametresi adlandırma yönergeleri
Aşağıdaki yönergeler, genel tür parametrelerindeki tür parametreleri için geçerlidir. Tür parametreleri, genel bir türdeki veya genel bir yöntemdeki bağımsız değişkenlerin yer tutucularıdır. C# programlama kılavuzunda
Tek harfli ad, açıklamaya tam uygunsa ve açıklayıcı bir ad ek değer katmıyorsa, genel tür parametrelerini açıklayıcı adlarla adlandırın.
public interface ISessionChannel<TSession> { /*...*/ } public delegate TOutput Converter<TInput, TOutput>(TInput from); public class List<T> { /*...*/ }düşünün.
public int IComparer<T>() => 0; public delegate bool Predicate<T>(T item); public struct Nullable<T> where T : struct { /*...*/ }Açıklayıcı tür parametre adlarını "T" ile önceden ekleyin.
public interface ISessionChannel<TSession> { TSession Session { get; } }bir tür parametresine parametre adına yerleştirilen kısıtlamaları belirten düşünün. Örneğin,
ISessionkısıtlanmış bir parametreTSessionolarak adlandırılabilir.
Ca1715
Ek adlandırma kuralları
yönergelerini kullanarak
içermeyen örnekler, ad alanı niteliklerini kullanır. Bir ad alanının bir projede varsayılan olarak içeri aktarıldığını biliyorsanız, bu ad alanından adları tam olarak nitelemeniz gerekmez. Nitelenmiş adlar, aşağıdaki örnekte gösterildiği gibi tek bir satır için çok uzunsa nokta (.) sonrasında kesilebilir. var currentPerformanceCounterCategory = new System.Diagnostics. PerformanceCounterCategory();Diğer yönergelere uymaları için Visual Studio tasarımcı araçları kullanılarak oluşturulan nesnelerin adlarını değiştirmeniz gerekmez.