Ce este interfața în C# cu exemplu
⚡ Rezumat inteligent
Interfața în C# definește o contrafăcutătract care specifică ce metode și proprietăți trebuie să implementeze o clasă, fără a furniza codul propriu-zis. Clasa de implementare furnizează comportamentul concret, permițând cuplarea slabă și moștenirea multiplă între tipuri neînrudite.

Ce este interfața în C#?
An interfaţă în C# este utilizat împreună cu o clasă pentru a defini o contravențietract, care este un acord privind ceea ce clasa va oferi unei aplicații. Interfața definește ce operațiuni poate efectua o clasă. O interfață declară proprietățile și metodele. Depinde de clasă să definească exact ce va face metoda.
Să ne uităm la un exemplu de interfață prin schimbarea claselor din aplicația noastră Consolă. Rețineți că nu vom rula codul deoarece nu există nimic care să poată fi rulat folosind o interfață.
Exemplu de interfață C#
Să creăm o clasă de interfață. Clasa se va numi „Guru„99Interface.” Clasa noastră principală va extinde apoi interfața definită. Tot codul trebuie scris în fișierul Program.cs.
using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; namespace DemoApplication { interface IGuru99Interface { void SetTutorial(int pID, string pName); String GetTutorial(); } class Guru99Tutorial : IGuru99Interface { protected int TutorialID; protected string TutorialName; public void SetTutorial(int pID, string pName) { TutorialID = pID; TutorialName = pName; } public String GetTutorial() { return TutorialName; } static void Main(string[] args) { Guru99Tutorial pTutor = new Guru99Tutorial(); pTutor.SetTutorial(1,".Net by Guru99"); Console.WriteLine(pTutor.GetTutorial()); Console.ReadKey(); } } }
Code Explicaţie:-
Aici, explicăm secțiunile importante ale codului
- Mai întâi definim o interfață numită „Guru99Interface.” Rețineți că cuvântul cheie „interfață” este folosit pentru a defini o interfață.
- În continuare, definim metodele care vor fi utilizate de interfața noastră. În acest caz, definim aceleași metode care sunt utilizate în toate exemplele anterioare. Rețineți că o interfață doar declară metodele. Nu definește codul din ele.
- Apoi ne facem GuruClasa 99Tutorial extinde interfața. Aici scriem codul care definește diversele metode declarate în interfață. Acest tip de codare realizează următoarele
- Aceasta asigură că clasa, Guru99Tutorial adaugă doar codul necesar pentru metodele „SetTutorial” și „GetTutorial” și nimic altceva.
- De asemenea, asigură că interfața se comportă ca o escrocherietract. clasă trebuie să respecte contractultract. Deci, dacă contracDacă spune că ar trebui să aibă două metode numite „SetTutorial” și „GetTutorial”, atunci așa ar trebui să fie.
Interfață C# vs. AbstracClasa t
O întrebare frecventă pentru începători este cum diferă o interfață C# de o abstracclasa tAmbele definesc o contravenție.traccă și alte tipuri urmează exemplul, însă ele servesc obiective de design diferite.
Diferențele cheie sunt enumerate mai jos:
- Implementare: O interfață conține doar declarații, în timp ce un abstracClasa T poate oferi atât exerciții abdominaletracmembri t și metode implementate complet.
- Moștenirea multiplă: O clasă poate implementa mai multe interfețe, dar poate moșteni doar o singură abstracclasa t.
- Stat/Judet: Un abdomentracClasa t poate conține câmpuri, constructori și proprietăți cu date, în timp ce o interfață nu poate stoca starea instanței.
- Modificatori de acces: AbstracMembrii clasei t pot fi publici, protejați sau privați, în timp ce membrii interfeței clasice sunt implicit publici.
- Utilizare caz: Folosește o interfață pentru a adăuga o capacitate între tipuri care nu au legătură și un abstracclasa t pentru a partaja cod comun între tipuri strâns înrudite.
Pe scurt, o interfață descrie ce poate face o clasă, în timp ce un abstracClasa t poate defini, de asemenea, o parte din modul în care se face aceasta.
Cum se implementează mai multe interfețe în C#
Spre deosebire de moștenirea claselor, C# permite unei singure clase să implementeze mai multe interfețe. Acesta este modul în care limbajul oferă o formă sigură de moștenire multiplă, fără ambiguitatea care apare din moștenirea mai multor clase de bază simultan.
Pentru a implementa mai multe interfețe, listați-le după numele clasei și separați fiecare cu virgulă. Clasa trebuie apoi să definească fiecare metodă declarată în fiecare interfață pe care o implementează.
Pas 1) Declarați două interfețe, fiecare cu propria metodă.
Pas 2) Creați o clasă care implementează ambele interfețe, separând numele interfețelor cu virgulă.
Pas 3) Furnizați un corp de metodă pentru fiecare membru declarat în fiecare interfață.
Exemplul de mai jos prezintă o clasă Document care implementează atât o clasă IReadable și o interfață IWritable.
using System; namespace DemoApplication { interface IReadable { void Read(); } interface IWritable { void Write(); } class Document : IReadable, IWritable { public void Read() { Console.WriteLine("Reading the document"); } public void Write() { Console.WriteLine("Writing to the document"); } static void Main(string[] args) { Document doc = new Document(); doc.Read(); doc.Write(); Console.ReadKey(); } } }
Code Explicaţie:-
- Declarăm două interfețe, IReadable și IWritable. Fiecare interfață declară o singură metodă fără corp.
- Clasa Document listează ambele interfețe după două puncte, separate prin virgulă, deci este de acord să onoreze ambele condiții.tracts.
- Clasa definește apoi metodele Read și Write. Skipping oricare dintre metode ar cauza o eroare la compilare.
- Metoda Main creează un obiect Document și apelează ambele metode, dovedind că clasa satisface cele două interfețe.
Când programul rulează, acesta imprimă Citirea documentului pe prima linie și Scrierea în document pe a doua linie. Acest model menține fiecare contratracmic și concentrat, ceea ce face ca clasa Document să fie mai ușor de testat și extins.
Avantajele utilizării interfețelor în C#
Interfețele sunt utilizate pe scară largă în proiectele profesionale C# deoarece fac codul flexibil și mai ușor de întreținut. Acestea vă permit să programați într-un mod convențional.tract mai degrabă decât la o clasă concretă.
Principalele avantaje includ:
- Cuplaj slab: Code depinde de interfață, nu de o clasă specifică, deci o implementare se poate schimba fără a întrerupe apelanții.
- Moștenirea multiplă: O clasă poate moșteni comportamentul de la mai multe interfețe, ceea ce moștenirea simplă a clasei nu permite.
- Testabilitate: Interfețele simplifică schimbarea unei clase reale cu un obiect mock în timpul testării unitare.
- Injecție de dependență: Framework-urile injectează o implementare a interfeței la momentul execuției, o idee centrală din spatele principiilor SOLID.
- Coerența: Fiecare clasă de implementare este obligată să ofere același set de membri, ceea ce menține un API predictibil.
Datorită acestor beneficii, interfețele se află în centrul majorității modelelor de design și framework-urilor de aplicații C# moderne.

