C# tanımlayıcı adlandırma kuralları ve kuralları

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.

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 çizgi (_) ile 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ının ö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, @if adlı ifbir tanımlayıcı bildirir. Bu ayrıntılı tanımlayıcılar öncelikle diğer dillerde bildirilen tanımlayıcılarla birlikte çalışabilirlik içindir.

Geçerli tanımlayıcıların tam tanımı için C# Dil Belirtimi'ndeki Tanımlayıcılar makalesine bakın.

Önemli

C# dil belirtimi yalnızca harf (Lu, Ll, Lt, Lm, Lo veya Nl), basamak (Nd), bağlanma (Bilgisayar), birleştirme (Mn veya Mc) ve biçimlendirme (Cf) kategorilerine izin verir. 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ı zorlamaz. Projelerinizde farklı kuralları kullanabilirsiniz.

Kural gereği, C# programları tür adları, ad alanları ve tüm genel üyeler için kullanır PascalCase . Ayrıca ekip, dotnet/docs .NET Çalışma Zamanı ekibinin kodlama stilinden benimsenen aşağıdaki kuralları kullanır:

  • Arabirim adları büyük Iile başlar.

  • Öznitelik türleri sözcüğüyle Attributebiter.

  • Sabit listesi türleri, iltihapsı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 ile s_başlar. Bu kural, varsayılan Visual Studio davranışı veya Çerçeve tasarım yönergelerinin bir parçası değildir, ancak editorconfig içinde yapılandırılabilir.

  • Yaygın olarak bilinen ve kabul edilen kısaltmalar dışında adlarda kısaltma veya kısaltma kullanmaktan kaçının.

  • Ters etki alanı adı gösterimini izleyen anlamlı ve açıklayıcı ad alanları kullanın.

  • 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, C sınıflar için kullanınS.
    • Yöntemler için kullanın M .
    • Değişkenler için, p parametreler için kullanınv.
    • Parametreler için ref kullanınr.

İpucu

Kod stili adlandırma kurallarını kullanarak büyük harf kullanımı, önekler, sonekler ve sözcük ayırıcılarıyla ilgili adlandırma kurallarını zorunlu kılabilirsiniz.

Aşağıdaki örneklerde, ve öğeleriyle çalışırken işaretlenen public öğelerle protectedprotected internal ilgili yönergeler de geçerlidir ve bunların tümü dış arayanlar tarafından görülebilecek şekilde tasarlanmıştır.

Pascal büyük/küçük harf

, interface, structveya delegate türünü adlandırırken classpascal 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 interfaceadını adlandırırken, adın önüne bir Ieklemeye ek olarak pascal büyük/küçük harf kullanın. Bu ön ek, tüketicilere bunun bir interfaceolduğunu açıkça gösterir.

public interface IWorkerQueue
{
}

Alanlar, özellikler, olaylar gibi türlerin üyelerini adlandırırken public pascal büyük/küçük harf kullanımını kullanın. Ayrıca, tüm yöntemler ve yerel işlevler için pascal büyük/küçük harf 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;
        // ...
    }
}

Konumsal kayıtlar yazarken, parametrelerin genel özellikleri olduğu için pascal büyük/küçük harflerini 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ı

Adlandırırken private veya internal alanlara ön ek _eklerken camel casing ("camelCasing") kullanın. 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;
}

İpucu

Deyim tamamlamayı destekleyen bir IDE'de bu adlandırma kurallarını izleyen C# kodu düzenlenirken, yazma _ işlemi nesne kapsamlı tüm üyeleri gösterir.

veya internalalanlarıyla staticprivate çalışırken ve iş parçacığı statik kullanımı için ön ekini s_ kullanınt_.

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)
{
}

C# adlandırma kuralları hakkında daha fazla bilgi için .NET Çalışma Zamanı ekibinin kodlama stiline bakı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 genel tür parametreleri hakkında daha fazla bilgi edinebilirsiniz.

  • Tek bir harf adı tamamen açıklayıcı değilse ve açıklayıcı bir ad değer eklemediği sürece, genel tür parametrelerini açıklayıcı adlarla adlandırabilirsiniz.

    public interface ISessionChannel<TSession> { /*...*/ }
    public delegate TOutput Converter<TInput, TOutput>(TInput from);
    public class List<T> { /*...*/ }
    
  • Tek harfli tür parametresi olan türler için tür parametresi adı olarak kullanmayı T göz önünde bulundurun.

    public int IComparer<T>() { return 0; }
    public delegate bool Predicate<T>(T item);
    public struct Nullable<T> where T : struct { /*...*/ }
    
  • Ön ek açıklayıcı tür parametre adlarını "T" ile yapın .

    public interface ISessionChannel<TSession>
    {
        TSession Session { get; }
    }
    
  • Parametre adında tür parametresine yerleştirilen kısıtlamaları belirtmeyi göz önünde bulundurun . Örneğin, ile kısıtlanmış ISession bir parametre olarak adlandırılabilir TSession.

Kod çözümleme kuralı CA1715 , tür parametrelerinin uygun şekilde adlandırıldığından emin olmak için kullanılabilir.

Ek adlandırma kuralları

  • Yönergeleri kullanmayı, ad alanı nitelemelerini kullanmayı içermeyen örnekler. 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.