Az osztályok legnagyobb előnyei, hogy a részegységek láthatósága, elérhetősége szabályozható. C# esetén négy elérés módosító kulcsszó létezik.
Az alábbi kulcsszavakat különböző elemekre alkalmazhatjuk. A közvetlenül a névtérben elhelyezhető elemek (class
, struct
, interface
, delegate
, enum
) esetén a public
vagy internal
módosítót alkalmazhatjuk.
Amennyiben nem jelöljük meg egy elem elérési szintjét, akkor az alapértelmezetten internal
, minden másra private
(mező, metódus, tulajdonság, stb..)
private
A privát metódusok, változók és tulajdonságok csak az adott osztályon belül érhetőek el, a külvilág számára nem. Tervezés során ilyen minősítéssel azokat a tagokat érdemes megjelölni, amelyek szükségesek az objektum belső működéséhez, de nem kell, hogy a külvilág tudjon ezekről. Autós hasonlattal élve, ha az autót egy objektumnak tekintjük, melyben a motor szintén egy objektum, akkor a hengerfej például a motor privát adattagja a vezető szempontjából, mivel a vezetőnek a motorhoz csak annyi köze van, hogy megy-e, vagy nem.
protected
A védett adattagoknak öröklés során van szerepük. Ezen módosítóval megjelölt elemek a leszármazott osztályon belül is láthatóak, úgy viselkednek, mint ha az adott osztályban private
módosítóval lettek volna definiálva.
public
Az osztályon belül és az osztályon kívül is elérhetőek bárki számára, megkötés nélkül. Ezzel a kulcsszóval olyan tagokat érdemes megjelölni, amelyeket a külvilág számára is használhatóvá szeretnénk tenni. Maradva az autós hasonlatnál, a kormánykerék egy publikus adattag az autóban, hiszen ahhoz hozzáférhet a vezető és a szerelő is egyaránt.
internal
Ez a láthatósági szint C# specifikus. Ezzel a kulcsszóval megjelölt elemek csak az adott szerelvényen belül lesznek láthatóak. A szerelvényen kívül úgy viselkednek, mint ha privát adattagok lennének, vagyis nem lehet hozzájuk férni, viszont szerelvényen belül publikus láthatósággal rendelkeznek.
protected internal
Ahogy a neve is mutatja, a protected
és az internal
kombinációja. Csak az adott szerelvényen belül internal viselkedéssel rendelkezik, osztályon kívüli leszármazott típusoknak pedig úgy viselkedik, mint egy protected tag.
private protected
Ez a módosító C# 7.2 óta elérhető. Az ilyen módosítóval megjelölt elemek protected
mezőként viselkednek, de csak egy adott szerelvényen belül.
file
C# 11 óta elérhető módosító és csak típusok esetén alkalmazható. Az ilyen módon megjelölt típusok csak az adott .cs fájlon belül érhetőek el. Kifejezetten a forráskód generátorokhoz lett kitalálva.
Jelentés módosítók
partial
A részleges, angol szóval partial osztályok a .NET 2.0-ban jelentek meg. A részleges osztály egy olyan osztály, amely több forrásfájlban helyezkedik el. Ezt kifejezetten a Windows Forms tervezőhöz találták ki, mivel a Visual Studio a felület megjelenését generálja egy designer.cs fájlba. Így a felhasználó által írt kód és a generált kód elválasztódik egymástól, logikailag azonban mégis összetartoznak. Egy osztály attól lesz részleges, hogy a módosítók között szerepel a partial kulcsszó. Természetesen mi is alkothatunk részleges osztályokat. A partial módosító metódusokra is alkalmazható.
const
A const kulcsszó csak változók előtt alkalmazható egy osztály tag meghatározásakor. Az ezzel a kulcsszóval meghatározott változó konstans és statikus elérésű lesz, vagyis az értéke a program futása közben nem módosulhat. Értéket az ilyen módosítóval ellátott változóknak csak a kódban lehet adni. Csak olyan típusok esetén alkalmazható, ahol már fordítási időben eldönthető a változó értéke. Ez azt jelenti, hogy a new
operátorral létrehozható referencia típusokkal nem működik.
readonly
A readonly szintén csak változó előtt alkalmazható egy osztály tag meghatározásakor. Hasonlóan működik, mint a const. A különbség az, hogy a readonly változó futás közben, az osztály konstruktorában kaphat értéket, de miután értéket egyszer már kapott, annak az értéke nem módosítható a program későbbi futása során. A C# 8.0-ás változata óta metódusok esetén is alkalmazható. Ha metóduson alkalmazzuk, akkor a megjelölt metódus nem módosíthatja az osztály adattagjait. Ez leginkább öröklődésnél lehet fontos.
static
Statikus elérésűvé teszi magát az osztályt vagy annak egy elemét. Előnye és használata részletesen a következő alfejezetekben lesz kifejtve.