Käytä muunnoksia (määrityksiä) C#:ssa ohjelmaesimerkein

⚡ Älykäs yhteenveto

C#:n käyttöoikeusmodifioijat ovat avainsanoja, jotka asettavat luokan, ominaisuuden tai metodin näkyvyyden ja rajoittavat sitä, mitkä ulkoiset ohjelmat voivat käyttää niitä. Konstruktorit alustavat kenttien arvot automaattisesti aina, kun luokan objekti luodaan.

  • 🔐 yksityinen: Yksityisen käyttöoikeuden muokkaaja rajoittaa jäsenen samaan luokkaan estäen pääsyn kaikilta ulkoisilta ohjelmilta.
  • 🌐 Julkinen: Julkisen käytön muokkaaja paljastaa ominaisuuden tai metodin mille tahansa ulkoiselle ohjelmalle rajoituksetta.
  • 🛡️ Suojattu: Suojattu käyttöoikeusmuokkaaja jakaa jäseniä vain nykyisestä luokasta perityille luokille.
  • 📦 Sisäinen: Sisäinen käyttöoikeusmuokkaaja sallii käytön saman kokoonpanon sisällä, mutta ei ulkoisesta ohjelmasta.
  • 🏗️ Rakentaja: Konstruktori jakaa luokan nimen, ei ota paluuarvoa ja alustaa kentät, kun objekti luodaan.
  • 🤖 AI-apu: GitHub Copilot tukee modifioijia ja konstruktoreita, kun taas ML.NET yhdistää luokan ominaisuudet malliominaisuuksiin.

Käyttöoikeusmuokkaajat (määrittelijät) C#:ssa

Mikä on Access Modifier (Specifier) ​​C#:ssa?

Pääsyn muokkaajat C#:n käyttöoikeusmäärittelijät eli Access Specifiers ovat avainsanoja, joita käytetään luokan ominaisuuden tai metodin näkyvyyden määrittämiseen. Niitä käytetään, kun et halua muiden ohjelmien näkevän luokan ominaisuuksia tai metodeja. Käyttöoikeusmäärittelijät rajoittavat pääsyä niin, että muut ohjelmat eivät voi nähdä luokan ominaisuuksia tai metodeja.

C#:ssa on 6 tyyppiä pääsyn muokkaajia:

  • yksityinen
  • julkinen
  • Suojattu
  • Sisäinen
  • Suojattu sisäinen
  • Yksityinen suojattu

Opimme tärkeimmistä pääsymäärityksistä C#:ssa alla selitetyillä ohjelmaesimerkeillä.

Yksityisen pääsyn muokkaajat C#:ssa

Kun Yksityinen käyttöoikeus on liitetty joko ominaisuuteen tai menetelmään, se tarkoittaa, että näitä jäseniä ei voida käyttää mistään ulkoisesta ohjelmasta.

Esimerkki Private Access Modifierista

Otetaan esimerkki ja katsotaan, mitä tapahtuu, kun käytämme yksityisen pääsyn muokkausta.

Muokataan nykyistä koodia Tutorial.cs-tiedostossamme. Muutetaan SetTutorial-menetelmässä julkinen avainsana yksityiseksi.

Yksityisen pääsyn muokkaajat

Siirrytään nyt Program.cs-tiedostoomme. Huomaat, että SetTutorial-menetelmän alla on punainen kiemurteleva viiva.

Koska olemme nyt ilmoittaneet SetTutorial-menetelmän yksityiseksi Tutorial-luokassamme, Visual Studio on havainnut tämän. Se on kertonut käyttäjälle korostamalla, että nyt tämä menetelmä ei toimi Program.cs-tiedostosta.

Yksityinen pääsyn muokkaaja

C# Public Access Modifiers

Kun Julkinen käyttöoikeus on liitetty joko ominaisuuteen tai menetelmään, se tarkoittaa, että näitä jäseniä voidaan käyttää mistä tahansa ulkoisesta ohjelmasta. Olemme nähneet tämän jo aikaisemmissa esimerkeissämme.

Esimerkki Public Access Modifierista

C# Public Access Modifiers

Koska olemme määrittäneet menetelmämme julkisiksi Tutorial-luokassa, niitä voi käyttää Program.cs-tiedostosta.

Suojatun pääsyn muokkaajat C#:ssa

Kun suojatun pääsyn muokkaus on liitetty joko ominaisuuteen tai menetelmään, se tarkoittaa, että vain näitä jäseniä voi käyttää luokat peritty nykyisestä luokka. Tämä selitetään tarkemmin Perintöluokassa.

C# sisäisen pääsyn muokkaajat

Kun sisäinen käyttöoikeusmuuttaja on liitetty joko ominaisuuteen tai menetelmään, näitä jäseniä voi käyttää vain sisäinen ohjelma, mutta ei ulkoinen ohjelma.

C#-konstruktori

C# Konstruktoreita käytetään alustamaan luokkakenttien arvot, kun niitä vastaavat objektit luodaan. Konstruktori on menetelmä, jolla on sama nimi kuin luokalla. Jos konstruktori on määritelty luokassa, se tarjoaa ensimmäisen menetelmän, jota kutsutaan, kun objekti luodaan. Oletetaan, että meillä olisi luokka nimeltä Työntekijä. Konstruktorimenetelmän nimi olisi myös Työntekijä().

Seuraavat keskeiset asiat on huomioitava konstruktorimenetelmistä

  1. Rakentajan C#-oletuskäyttöoikeusmuutos on tehtävä julkiseksi.
  2. Konstruktorimenetelmällä ei pitäisi olla palautustyyppiä.

Esimerkki C#-konstruktorista

Katsotaan nyt, kuinka voimme sisällyttää rakentajien käyttäjän koodiimme. Käytämme rakentajia alustamaan TutorialID- ja TutorialName-kentät joihinkin oletusarvoihin, kun objekti luodaan.

Vaihe 1) Ensimmäinen askel on rakentaa Tutorial-luokkaamme. Tässä vaiheessa lisäämme alla olevan koodin Tutorial.cs-tiedostoon.

C#-konstruktori

Code Selitys:-

  1. Lisäämme ensin uuden menetelmän, jolla on sama nimi kuin luokalla. Koska se on sama nimi kuin luokka, C# käsittelee sitä konstruktorimenetelmänä. Joten nyt aina kun kutsuva menetelmä luo tämän luokan objektin, tätä menetelmää kutsutaan oletusarvoisesti.
  2. Tutorial-konstruktorissa asetamme TutorialID:n arvoksi 0 ja TutorialNamen arvoksi "Default". Joten aina kun objekti luodaan, näillä kentillä on aina nämä oletusarvot.

Siirrytään nyt Program.cs-tiedostoomme ja poistetaan vain rivi, joka kutsuu SetTutorial-menetelmää. Tämä johtuu siitä, että haluamme vain nähdä kuinka rakentaja toimii.

C#-konstruktori

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace DemoApplication
{
 class Tutorial
 {
  public int TutorialID; 
  public string TutorialName;
  
  public Tutorial()
  {
   TutorialID=0;
   TutorialName="Default";
  }
  public void SetTutorial(int pID,string pName) 
  {
   TutorialID=pID;
   TutorialName=pName;
  }
  public String GetTutorial()
  {
   return TutorialName;
  }
  
  static void Main(string[] args) 
  {
   Tutorial pTutor=new Tutorial();
    
   Console.WriteLine(pTutor.GetTutorial());
    
   Console.ReadKey(); 
  }
 }
}

Code Selitys:-

  1. Ensimmäinen vaihe on objektin luominen Tutorial-luokkaan. Tämä tehdään "uusi"-avainsanalla.
  2. Käytämme Tutorial-luokan GetTutorial-menetelmää saadaksemme TutorialNamen. Tämä näytetään sitten konsolissa Console.WriteLine-menetelmän kautta.

Jos yllä oleva koodi on syötetty oikein ja ohjelma suoritetaan, seuraava tulos näytetään.

lähtö:

C#-konstruktori

Tulosteesta voimme nähdä, että rakentajaa todellakin kutsuttiin ja että TutorialName-arvon arvoksi asetettiin "Oletus".

Huomautus: Tässä arvo "oletus" haetaan rakentajalta.

UKK

Jos muokkaajaa ei ole määritetty, luokan ja rakenteen jäsenet käyttävät oletusarvoisesti private-tyyppiä ja ylimmän tason tyypit internal-tyyppiä, jolloin ne pysyvät piilossa, kunnes niiden näkyvyyttä laajennetaan.

Protected-tyyppi paljastaa jäsenen samalle luokalle ja kaikille siitä johdetuille luokille, jopa eri kokoonpanojen välillä. Internal-tyyppi paljastaa sen vain saman kokoonpanon tyypeille.

Suojattu sisäinen sallii pääsyn samasta kokoonpanosta tai mistä tahansa johdetusta luokasta. Private protected on tiukempi ja sallii vain johdetut luokat saman kokoonpanon sisällä.

C# tukee oletusarvoisia, parametrisoituja, kopioitavia, staattisia ja yksityisiä konstruktoreita. Ne alustavat objektin kentät, suorittavat luokan asennuksen kerran tai kloonaavat toisen objektin arvot.

Staattinen konstruktori ei ota vastaan ​​muokkaajia tai parametreja. Se suoritetaan kerran, ennen ensimmäisen objektin luomista tai staattisten jäsenten lataamista, alustaen staattiset kentät.

Kyllä. Luokka voi määritellä useita konstruktoreita, joilla on erilaiset parametriluettelot. Kääntäjä valitsee sen, joka vastaa new-luokalle annettuja argumentteja.

Kyllä. GitHub Copilot ehdottaa muokkaajia, konstruktoreita ja kenttien alustajia luokan nimestä tai kommentista Visual Studiossa ja VS Code. RevKatso jokainen ehdotettu näkyvyystaso.

ML.NET kuvaa C#-tietoluokan julkiset ominaisuudet malliominaisuuksiin ja -tunnisteisiin. Julkiset getter- ja setter-funktiot mahdollistavat näiden arvojen lukemisen harjoittelun aikana.

Tiivistä tämä viesti seuraavasti: