Megjegyzés
Az oldalhoz való hozzáféréshez engedély szükséges. Megpróbálhat bejelentkezni vagy módosítani a címtárat.
Az oldalhoz való hozzáféréshez engedély szükséges. Megpróbálhatja módosítani a címtárat.
Az azonosító egy típushoz (osztályhoz, felülethez, szerkezethez, delegálthoz vagy számhoz), taghoz, változóhoz vagy névtérhez rendelt név.
Ez a cikk az érvényes C#-azonosítók alapvető szabályait és a konzisztens, professzionális kódíráshoz használt elnevezési konvenciókat ismerteti.
Elnevezési szabályok
Az érvényes azonosítóknak követniük kell ezeket a szabályokat. A C#-fordító hibát okoz minden olyan azonosítónál, amely nem követi az alábbi szabályokat:
- Az azonosítóknak betűvel vagy aláhúzásjellel (
_) kell kezdődniük. - Az azonosítók tartalmazhatnak Unicode betűkaraktereket, tizedes számjegyeket, Unicode összekötő karaktereket, Unicode kombináló karaktereket vagy Unicode formázási karaktereket. További információ a Unicode-kategóriákról: Unicode-kategóriaadatbázis.
A C# kulcsszavaknak megfelelő azonosítókat az azonosító @ előtagjának használatával deklarálhatja. A @ nem része az azonosító nevének. Például @if deklarál egy ifnevű azonosítót. Ezek a szó szerinti azonosítók elsősorban a más nyelveken deklarált azonosítókkal való együttműködésre használhatók.
Az érvényes azonosítók teljes definícióját a C# nyelvspecifikáció
Fontos
A C# nyelvspecifikációs csak betűkategóriákat (Lu, Ll, Lt, Lm vagy Nl), számjegyet (Nd), csatlakozást (Pc), kombinálást (Mn vagy Mc) és formázási (Cf) kategóriákat engedélyez. Bármi, ami azon kívül van, automatikusan a _-re cserélődik le. Ez hatással lehet bizonyos Unicode-karakterekre.
Elnevezési konvenciók
A szabályok mellett az azonosítónevekre vonatkozó konvenciók is használhatók a .NET API-kban. Ezek a konvenciók egységességet biztosítanak a nevekhez, de a fordítóprogram nem kényszeríti ki őket. A projektekben különböző konvenciókat használhat.
A C#-programok konvenció szerint PascalCase használnak típusnevekhez, névterekhez és minden nyilvános taghoz. Emellett a dotnet/docs csapat a .NET futtatókörnyezeti csapat kódolási stílusának a következő konvenciók használatát használja:
A felületnevek nagybetűvel kezdődnek
I.Az attribútumtípusok a
Attributeszóval végződnek.A felsorolási típusok a nem jelölőkhöz egyes számú főnevet, a jelölőkhöz többes számú főnevet használnak.
Az azonosítók nem tartalmazhatnak két egymást követő aláhúzásjelet (
_) karaktert. Ezek a nevek a fordító által létrehozott azonosítók számára vannak fenntartva.Használjon értelmes és leíró neveket változókhoz, metódusokhoz és osztályokhoz.
Inkább az egyértelműséget, mint a rövidséget.
A PascalCase használata osztálynevekhez és metódusnevekhez.
A camelCase metódusparaméterekhez és helyi változókhoz használható.
A PascalCase használatával konstansneveket, mezőket és helyi állandókat is használhat.
A privát példány mezők alsó vonallal (
_) kezdődnek, a fennmaradó szöveg pedig camelCase formátumú.A statikus mezők
s_kezdődnek. Ez a konvenció nem az alapértelmezett Visual Studio-viselkedés, és nem is része a keretrendszer tervezési irányelveinek, hanem konfigurálható az editorconfig.Ne használjon rövidítéseket vagy rövidítéseket a nevekben, kivéve a széles körben ismert és elfogadott rövidítéseket.
Használjon értelmes és leíró névtereket, amelyek a fordított tartománynév jelölését követik.
Válassza ki a szerelvény elsődleges célját képviselő szerelvényneveket.
Kerülje az egybetűs nevek használatát, kivéve az egyszerű hurokszámlálókat. Emellett a C#-szerkezetek szintaxisát leíró szintaxis-példák gyakran az alábbi egybetűs neveket használják, amelyek megfelelnek a C# nyelvspecifikációjábanhasznált konvenciónak. A szintaxis példái kivételt képeznek a szabály alól.
- A
Shasználata strukturáláshoz,Cosztályokhoz. - Metódusokhoz használja a
M. - Változókhoz
v, paraméterekhezp. - Használja a
r-t arefparaméterekhez.
- A
Borravaló
A nagybetűkkel, előtagokkal, utótagokkal és szóelválasztókkal kapcsolatos elnevezési konvenciók kikényszeríthetők kódstílus-elnevezési szabályokhasználatával.
Az alábbi példákban a public megjelölt elemekre vonatkozó útmutatás az protected és protected internal elemek használatakor is alkalmazható, amelyek mindegyike külső hívó számára látható.
Pascal-eset
Pascal casing ("PascalCasing") használata class, interface, structvagy delegate típus elnevezéséhez.
public class DataService
{
}
public record PhysicalAddress(
string Street,
string City,
string StateOrProvince,
string ZipCode);
public struct ValueCoordinate
{
}
public delegate void DelegateType(string message);
A interfaceelnevezésekor használja a Pascal-case írásmódot, valamint lássa el a nevet egy Ielőtaggal. Ez az előtag egyértelműen jelzi a felhasználóknak, hogy ez egy interface.
public interface IWorkerQueue
{
}
Ha public típusú tagokat, például mezőket, tulajdonságokat, eseményeket nevesít, használjon pascal casingot. Emellett használjon Pascal esetet minden metódushoz és helyi függvényhez.
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;
// ...
}
}
Pozíciórekordok írásakor pascal casingot használjon a paraméterekhez, mivel azok a rekord nyilvános tulajdonságai.
public record PhysicalAddress(
string Street,
string City,
string StateOrProvince,
string ZipCode);
A pozíciórekordokkal kapcsolatos további információkért lásd tulajdonságdefinícióspozíciószintaxisát.
camelCase
Használjon "camelCasing"-et a private vagy internal mezők elnevezéséhez, és előtagként adja meg a _-t. Helyi változók elnevezéséhez, beleértve a delegate típusú példányokat is, használjon camel case-t.
public class DataService
{
private IWorkerQueue _workerQueue;
}
Borravaló
Amikor az utasítás-kiegészítést támogató IDE-ben a fenti elnevezési konvencióknak megfelelő C#-kódot szerkeszti, a _ beírása megjeleníti az objektum hatókörébe tartozó összes tagot.
Ha staticprivate vagy internalmezőkkel dolgozik, használja a s_ előtagot, és a szál statikus mezők esetében használja a t_-et.
public class DataService
{
private static IWorkerQueue s_workerQueue;
[ThreadStatic]
private static TimeSpan t_timeSpan;
}
Metódusparaméterek írásakor használja a camel case-t.
public T SomeMethod<T>(int someNumber, bool isValid)
{
}
Elsődleges konstruktorparaméterek
Az elsődleges konstruktorparaméterek elnevezése a deklarált típustól függ:
A
classésstructtípusok esetén: Használjon camel case-t, amely konzisztens más metódusparaméterekkel.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ípusok esetén
record: Használja a Pascal-burkolatot, mivel a paraméterek nyilvános tulajdonságokká válnak.public record Person(string FirstName, string LastName); public record Address(string Street, string City, string PostalCode);
További információ az elsődleges konstruktorokról: Elsődleges konstruktorok.
További információ a C#-elnevezési konvenciókról a .NET Runtime csapat kódolási stílusánaktalálható.
Típusparaméter elnevezési irányelvei
Az alábbi irányelvek az általános típusparaméterek típusparamétereire vonatkoznak. A típusparaméterek az általános vagy általános metódus argumentumainak helyőrzői. A C# programozási útmutatóban általános típusparaméterekről olvashat bővebben.
Adjon általános típusparamétereket leíró névvel, kivéve, ha egy betűnév teljesen magától értetődő, és egy leíró név nem ad értéket.
public interface ISessionChannel<TSession> { /*...*/ } public delegate TOutput Converter<TInput, TOutput>(TInput from); public class List<T> { /*...*/ }Fontolja meg a
Tnév használatát az egybetűs típusparaméterrel rendelkező típusok típusparaméterének megadásához.public int IComparer<T>() => 0; public delegate bool Predicate<T>(T item); public struct Nullable<T> where T : struct { /*...*/ }Do előtag leíró típusú paraméterneveket a "T" betűvel.
public interface ISessionChannel<TSession> { TSession Session { get; } }Fontolja meg, amely a paraméter nevében egy típusparaméterre vonatkozó korlátozásokat jelez. Például egy olyan paraméter, amely
ISession-re van korlátozva, elnevezhetőTSession-nek.
A CA1715
További elnevezési konvenciók
Olyan példák, amelyek nem tartalmazzák a utasításokat ahasználatával, a névtér-kvalifikációkat alkalmazzák. Ha tudja, hogy a rendszer alapértelmezés szerint importál egy névteret egy projektben, nem kell teljes mértékben minősítenie a névtérben szereplő neveket. A minősített nevek pont (.) után törhetők fel, ha túl hosszúak egyetlen sorhoz, ahogy az alábbi példában is látható.
var currentPerformanceCounterCategory = new System.Diagnostics. PerformanceCounterCategory();Nem kell módosítania a Visual Studio designer eszközeivel létrehozott objektumok nevét, hogy azok megfeleljenek más irányelveknek.