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ódusargumentumokhoz, helyi változókhoz és privát mezőkhöz használható.
A PascalCase használatával konstansneveket, mezőket és helyi állandókat is használhat.
A privát példány mezői aláhúzással (
_aláhúzással) kezdődnek.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.
Adjunk az általános típusparamétereknek leíró neveket, kivéve ha egyetlen betűnév teljesen magától értetődő, és egy leíró név nem adna hozzá értelmezési előnyt.
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.