Top 50 C#-interviewspørgsmål og -svar (2026)
C#-interviewspørgsmål og svar til nybegyndere og 2/3/5/10 års erfaring
Her er C#-interviewspørgsmål og svar til både friskere og 5 eller 10 års erfarne kandidater til at få deres drømmejob.
1) Hvad er C#?
C# er et objektorienteret, typesikkert og administreret sprog, der er kompileret af .Net framework til at generere Microsoft Mellemsprog.
👉 Gratis PDF-download: C# Interview Interview Spørgsmål & Svar
2) Forklar typer af kommentarer i C# med eksempler
Enkelt linje
Eksempel:
//This is a single line comment
ii. Flere linjer (/* */)
Eksempel:
/*This is a multiple line comment We are in line 2 Last line of comment*/
iii. XML-kommentarer (///).
Eksempel:
/// summary; /// Set error message for multilingual language. /// summary
3) Kan flere catch-blokke udføres?
Nej, flere catch-blokke af lignende type kan ikke udføres. Når den korrekte fangstkode er udført, overføres kontrollen til den endelige blok, og derefter udføres den kode, der følger efter den endelige blok.
4) Hvad er forskellen mellem offentlig, statisk og ugyldig?
Offentligt erklærede variabler eller metoder er tilgængelige overalt i applikationen. Statiske erklærede variabler eller metoder er globalt tilgængelige uden at oprette en forekomst af klassen. Statiske medlemmer er som standard ikke globalt tilgængelige, det afhænger af den anvendte adgangstype. Compileren gemmer metodens adresse som indgangspunkt og bruger denne information til at begynde udførelsen, før der oprettes objekter. Og Void er en typemodifikator, der angiver, at metoden eller variablen ikke returnerer nogen værdi.
C# interview spørgsmål
5) Hvad er en genstand?
Et objekt er en forekomst af en klasse, hvorigennem vi får adgang til den pågældende klasses metoder. "Nyt" nøgleord bruges til at oprette et objekt. En klasse, der opretter et objekt i hukommelsen, vil indeholde oplysninger om den pågældende klasses metoder, variabler og adfærd.
6) Definer konstruktører
En konstruktør er en medlemsfunktion i en klasse, der har samme navn som dens klasse. Konstruktøren aktiveres automatisk, hver gang en objektklasse oprettes. Det konstruerer værdierne af datamedlemmer, mens klassen initialiseres.
7) Hvad er Jagged Arrays?
Arrayet, som har elementer af typen array, kaldes takkede array. Elementerne kan have forskellige dimensioner og størrelser. Vi kan også kalde takket Array som en Array af arrays.
8) Hvad er forskellen mellem ref & out parametre?
Et argument, der sendes som ref, skal initialiseres, før det overføres til metoden, mens ud-parameteren ikke skal initialiseres, før det overføres til en metode.
9) Hvad er brugen af 'using'-sætning i C#?
Blokken 'bruger' bruges til at hente en ressource og behandle den og derefter automatisk bortskaffe, når udførelsen af blokken er fuldført.
10) Hvad er serialisering?
Når vi vil transportere et objekt gennem et netværk, så skal vi konvertere objektet til en strøm af bytes. Processen med at konvertere et objekt til en strøm af bytes kaldes serialisering. For at et objekt kan serialiseres, skal det implementere ISerialize Interface. De-serialisering er den omvendte proces med at skabe et objekt ud fra en strøm af bytes.
11) Kan vi bruge "denne" kommando inden for en statisk metode?
Vi kan ikke bruge 'Dette' i en statisk metode, fordi vi kun kan bruge statiske variabler/metoder i en statisk metode.
12) Hvad er forskellen mellem konstanter og skrivebeskyttet?
Konstante variable erklæres og initialiseres på kompileringstidspunktet. Værdien kan ikke ændres efterfølgende. Skrivebeskyttet bruges kun, når vi ønsker at tildele værdien ved kørselstid.
13) Hvad er en grænsefladeklasse? Giv et eksempel på det
En grænseflade er en abstract-klasse, som kun har offentlige mavemusklertract-metoder, og metoderne har kun deklarationen og ikke definitionen. Disse abstract-metoder skal implementeres i de nedarvede klasser.
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace DemoApplication
{
interface Guru99Interface
{
void SetTutorial(int pID, string pName);
String GetTutorial();
}
class Guru99Tutorial : Guru99Interface
{
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();
}
}
}
14) Hvad er værdityper og referencetyper?
En værditype har en dataværdi i sit eget hukommelsesrum. Eksempel
int a = 30;
Referencetype gemmer adressen på det objekt, hvor værdien gemmes. Det er en pegepind til en anden hukommelsesplacering.
string b = "Hello Guru99!!";
15) Hvad er brugerdefineret kontrol og brugerkontrol?
Brugerdefinerede kontroller er kontroller genereret som kompileret kode (Dll'er), de er nemmere at bruge og kan føjes til værktøjskassen. Udviklere kan trække og slippe kontrolelementer til deres webformularer. Attributter kan på designtidspunktet. Vi kan nemt tilføje brugerdefinerede kontroller til flere applikationer (hvis delt Dll'er). Så hvis de er private, så kan vi kopiere til dll til bin-biblioteket i webapplikationen og derefter tilføje reference og bruge dem.
Brugerkontroller minder meget om ASP-inkluderingsfiler og er nemme at oprette. Brugerkontroller kan ikke placeres i værktøjskassen og trækkes – slippes fra den. De har deres design og kode bag. Filtypenavnet for brugerkontroller er ascx.
16) Hvad er forseglede klasser i C#?
Vi opretter forseglede klasser, når vi ønsker at begrænse den klasse, der skal nedarves. Forseglet modifikator bruges til at forhindre afledning fra en klasse. Hvis vi kraftigt angiver en forseglet klasse som basisklasse, opstår der en kompileringsfejl.
17) Hvad er metodeoverbelastning?
Metodeoverbelastning er at skabe flere metoder med samme navn med unikke signaturer i samme klasse. Når vi kompilerer, bruger compileren overbelastningsopløsning til at bestemme den specifikke metode, der skal påberåbes.
18) Hvad er forskellen mellem Array og Arraylist?
I et array kan vi kun have elementer af samme type. Størrelsen af arrayet er fast ved sammenligning. En arrayliste ligner en array, men den har ikke en fast størrelse.
19) Kan en privat virtuel metode tilsidesættes?
Nej, fordi de ikke er tilgængelige uden for klassen.
20) Beskriv tilgængelighedsmodifikatoren "beskyttet intern".
Beskyttede interne variabler/metoder er tilgængelige i den samme samling og også fra de klasser, der er afledt af denne overordnede klasse.
21) Hvad er forskellene mellem System.String og System.Text.StringBuilder klasser?
System.String er uforanderlig. Når vi ændrer værdien af en strengvariabel, tildeles en ny hukommelse til den nye værdi, og den tidligere hukommelsesallokering frigives. System.StringBuilder blev designet til at have et koncept med en foranderlig streng, hvor en række operationer kan udføres uden tildeling af separat hukommelsesplacering for den ændrede streng.
22) Hvad er forskellen mellem System.Array.CopyTo() og System.Array.Clone()?
Ved brug af Clone() metode, opretter vi et nyt array-objekt, der indeholder alle elementerne i det originale Array og bruger CopyTo() metode. Alle elementerne i eksisterende array kopieres til et andet eksisterende array. Begge metoder udfører en overfladisk kopi.
23) Hvordan kan vi sortere elementerne i Arrayet i faldende rækkefølge?
Ved brug af Sort() metoder efterfulgt af Reverse() fremgangsmåde.
24) Skriv C#-syntaksen ned for at fange en undtagelse
For at fange en undtagelse bruger vi try-catch-blokke. Catch blok kan have en parameter af system.Exception type.
F.eks:
try {
GetAllData();
}
catch (Exception ex) {
}
I ovenstående eksempel kan vi udelade parameteren fra catch statement.
25) Hvad er forskellen på en grænseflade og en abstract-klasse?
Grænseflader har alle metoder, der kun har deklaration, men ingen definition. I en abstract-klassen, kan vi have nogle konkrete metoder. I en interfaceklasse er alle metoderne offentlige. En abstract-klassen kan have private metoder.
26) Hvad er forskellen mellem Finalize() og Dispose() metoder?
Dispose() kaldes, når vi ønsker, at et objekt skal frigive eventuelle ikke-administrerede ressourcer med dem. På den anden side, Finalize() bruges til samme formål, men det garanterer ikke affaldsopsamlingen af en genstand.
27) Hvad er cirkulære referencer?
Cirkulær reference er en situation, hvor to eller flere ressourcer er indbyrdes afhængige af hinanden, forårsager låsetilstanden og gør ressourcerne ubrugelige.
28) Hvad er generiske stoffer i C#.NET?
Generiske stoffer bruges til at lave genanvendelige kodeklasser for at reducere koderedundansen, øge typesikkerheden og ydeevnen. Ved at bruge generiske stoffer kan vi oprette samlingsklasser. For at oprette generisk samling skal System.Collections.Generic-navneområdet bruges i stedet for klasser såsom ArrayList i System.Collections-navnerummet. Generics fremmer brugen af parametriserede typer.
29) Hvad er en objektpulje i .NET?
En objektpulje er en container, der indeholder objekter, der er klar til brug. tracks det objekt, der aktuelt er i brug, det samlede antal objekter i puljen. Dette reducerer overheaden ved oprettelse og genskabelse af objekter.
30) Liste over de almindeligt anvendte typer undtagelser i .net
ArgumentException, ArgumentNullException, ArgumentOutOfRangeException, ArithmeticException, DivideByZeroException ,OverflowException, IndexOutOfRangeException, InvalidCastException, InvalidOperationException, IOEndOfStreamException, NullReferenceException, OutOfMemoryException, StackOverflowException osv.
31) Hvad er tilpassede undtagelser?
Nogle gange er der nogle fejl, der skal håndteres i henhold til brugernes krav. Brugerdefinerede undtagelser bruges til dem og bruges definerede undtagelser.
32) Hvad er delegerede?
Delegerede er de samme, er funktionspointer i C++, men den eneste forskel er, at de er typesikre, i modsætning til funktionsmarkører. Delegerede er påkrævet, fordi de kan bruges til at skrive meget mere generiske typesikre funktioner.
33) Hvordan arver man en klasse til en anden klasse i C#?
Kolon bruges som arveoperator i C#. Indsæt blot et kolon og derefter klassens navn.
public class DerivedClass : BaseClass
34) Hvad er basisklassen i .net, som alle klasserne stammer fra?
System.Object
35) Hvad er forskellen mellem metodeoverstyring og metodeoverbelastning?
Ved metodeoverstyring ændrer vi metodedefinitionen i den afledte klasse, der ændrer metodeadfærden. Metodeoverbelastning er at skabe en metode med det samme navn inden for den samme klasse med forskellige signaturer.
36) Hvad er de forskellige måder en metode kan overbelastes på?
Metoder kan overbelastes ved hjælp af forskellige datatyper for en parameter, forskellig rækkefølge af parametre og forskelligt antal parametre.
37) Hvorfor kan du ikke angive tilgængelighedsmodifikatoren for metoder inde i grænsefladen?
I en grænseflade har vi virtuelle metoder, der ikke har metodedefinition. Alle metoderne er til for at blive tilsidesat i den afledte klasse. Det er derfor, de alle er offentlige.
38) Hvordan kan vi indstille klassen til at blive nedarvet, men forhindre metoden i at blive tilsidesat?
Erklær klassen som offentlig og gør metoden forseglet for at forhindre den i at blive tilsidesat.
39) Hvad sker der, hvis de nedarvede grænseflader har modstridende metodenavne?
Implementering er op til dig, da metoden er inde i din egen klasse. Der kan være et problem, når metoderne fra forskellige grænseflader forventer forskellige data, men hvad angår compileren, er du okay.
40) Hvad er forskellen mellem en struktur og en klasse?
Strukturer er værditypevariabler, og klasser er referencetyper – en sondring, der ofte optræder i OOPS-jobsamtalespørgsmålStrukturer gemt på stakken forårsager yderligere overhead, men hurtigere hentning, og strukturer kan ikke arves.
41) Hvordan bruger man nullbare typer i .Net?
Værdityper kan enten have deres normale værdier eller en nulværdi. Sådanne typer kaldes nullbare typer.
Int? someID = null;
If(someID.HasVAlue)
{
}
42) Hvordan kan vi oprette et array med ikke-standardværdier?
Vi kan oprette en matrix med ikke-standardværdier ved hjælp af Enumerable.Repeat.
43) Hvad er forskellen mellem "er" og "som" operatorer i c#?
"er"-operator bruges til at kontrollere kompatibiliteten af et objekt med en given type, og den returnerer resultatet som boolsk.
"som"-operator bruges til at støbe et objekt til en type eller en klasse.
44) Hvad er en multicast-delegeret?
En delegeret, der har flere behandlere tildelt, kaldes multicast-delegat. Hver handler er tildelt en metode.
45) Hvad er indeksere i C# .NET?
Indeksører er kendt som smarte arrays i C#. Det tillader forekomster af en klasse at blive indekseret på samme måde som et array.
F.eks:
public int this[int index] // Indexer declaration
46) Hvad er forskellen mellem "kast" og "kast ex" i .NET?
"Throw"-sætningen bevarer den originale fejlstak, mens "throw ex" har stakken trace fra deres kastepunkt. Det anbefales altid at bruge "kast", da det giver mere præcis fejlinformation.
47) Hvad er C#-attributter og dets betydning?
C# giver udviklere en måde at definere deklarative tags på visse entiteter, f.eks. Klasse, metode osv. kaldes attributter. Attributtens information kan hentes under kørsel ved hjælp af Reflection.
48) Hvordan implementerer man et singleton designmønster i C#?
I et singleton-mønster kan en klasse kun have én instans og giver et adgangspunkt til den globalt.
F.eks:
Public sealed class Singleton
{
Private static readonly Singleton _instance = new Singleton();
}
49) Hvad er forskellen mellem directcast og ctype?
DirectCast bruges til at konvertere den type objekt, der kræver, at runtime-typen er den samme som den angivne type i DirectCast.
Ctype bruges til konvertering, hvor konverteringen er defineret mellem udtrykket og typen.
50) Er C#-koden administreret eller ikke-administreret kode?
C# er administreret kode, fordi Common language runtime kan kompilere C#-kode til mellemsprog.
51) Hvad er konsolapplikation?
Et konsolprogram er et program, der kan køres i kommandoprompten i Windows. For evt begynder på .Net, opbygning af en konsolapplikation er ideelt set det første skridt til at begynde med.
52) Giv et eksempel på fjernelse af et element fra køen
Dequeue-metoden bruges til at fjerne et element fra køen.
using System;
using System.Collections;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace DemoApplication
{
class Program
{
static void Main(string[] args)
{
Queue qt = new Queue();
qt.Enqueue(1);
qt.Enqueue(2);
qt.Enqueue(3);
foreach (Object obj in qt)
{
Console.WriteLine(obj);
}
Console.WriteLine(); Console.WriteLine();
Console.WriteLine("The number of elements in the Queue " + qt.Count);
Console.WriteLine("Does the Queue contain " + qt.Contains(3));
Console.ReadKey();
}
}
}
Disse C# og relaterede WPF-jobsamtalespørgsmål vil også hjælpe i din viva (orale prøve).
