C# er et moderne, multiparadigme programmeringssprog udviklet af Microsoft inden for .NET-rammen. Sproget er primært rettet mod softwareudvikling til Windows og webapplikationer og kombinerer stærk typning, imperativ og objektorienteret programmering (OOP) med funktionelle programmeringsmuligheder. Det er bredt anerkendt for sin læsbarhed, alsidighed og robuste udviklingssupport, hvilket gør det til en favorit blandt erhvervsudviklere og spilprogrammører, især i forbindelse med Unity-spilmotoren.
C# blev skabt i begyndelsen af 2000'erne af Anders Hejlsberg og hans team hos Microsoft som en del af .NET-initiativet. Sproget blev designet til at forbedre produktiviteten ved at tilbyde et simpelt, moderne, objektorienteret programmeringssprog, der integreres godt med Microsoft-økosystemet. Indflydelsen fra tidligere sprog, såsom Java og C++, er tydelig i dets struktur.
De første versioner af C# var nært knyttet til .NET-rammen, som havde til formål at give udviklere et omfattende sæt biblioteker og værktøjer til at bygge applikationer. C# version 1.0 blev lanceret sammen med .NET Framework i 2002. Gennem årene er der blevet implementeret yderligere funktioner og forbedringer, og C# har udviklet sig betydeligt gennem forskellige iterationer.
Udgivelsen af .NET Core i 2016 markerede en vigtig milepæl, der gjorde C# platformuafhængig og øgede dets alsidighed. Efterfølgende versioner, herunder C# 7.0 og fremad, introducerede funktioner som tuples, mønstermatching og asynkrone streams, hvilket yderligere forbedrede sproget. I dag er C# i front for moderne softwareudvikling, understøttet af et livligt fællesskab og løbende opdateringer i .NET-økosystemet.
C# er et statisk typet sprog, hvilket betyder, at variabeltyper er kendt på kompileringstidspunktet. Denne funktion forbedrer ydeevnen og forhindrer visse typer runtime-fejl.
int number = 10;
string text = "Hej, C#";
C# understøtter fuldt ud OOP-koncepter, hvilket giver udviklere mulighed for at oprette klasser og objekter, kapsle data og bruge arv og polymorfi.
class Animal {
public void Speak() {
Console.WriteLine("Dyret taler");
}
}
class Dog : Animal {
public void Speak() {
Console.WriteLine("Hunden gør");
}
}
C# tillader brugen af egenskaber, hvilket muliggør bedre kapsling af klassedata, samtidig med at der opretholdes nem adgang til at hente og sætte værdier.
class Person {
private string name;
public string Name {
get { return name; }
set { name = value; }
}
}
C# understøtter delegater, som er typesikre funktionspegepinde, og begivenheder til implementering af begivenhedsdrevet programmering.
public delegate void Notify(); // Delegat
public class Process {
public event Notify ProcessCompleted; // Begivenhed
public void StartProcess() {
// Proceslogik
ProcessCompleted?.Invoke(); // Udløs begivenhed
}
}
C# tilbyder LINQ, en kraftfuld funktion, der gør det muligt at forespørge samlinger på en kortfattet og læsbar måde.
var numbers = new List<int> { 1, 2, 3, 4, 5 };
var evenNumbers = from n in numbers where n % 2 == 0 select n;
C# forenkler asynkron programmering ved hjælp af async og await nøgleordene, hvilket forbedrer ydeevnen for I/O-bundne opgaver.
public async Task<string> GetDataAsync() {
using (var client = new HttpClient()) {
return await client.GetStringAsync("http://example.com");
}
}
Udvidelsesmetoder giver udviklere mulighed for at "tilføje" nye metoder til eksisterende typer uden at ændre deres kildekode.
public static class MyExtensions {
public static int WordCount(this string str) {
return str.Split(' ').Length;
}
}
C# understøtter nullable værdi typer, hvilket muliggør repræsentation af data, der kan være fraværende.
int? nullableInt = null;
C# giver indbygget støtte til tuples, hvilket muliggør kapsling af flere værdier.
var person = (Name: "John", Age: 30);
Console.WriteLine($"{person.Name} er {person.Age} år gammel.");
.NET SDK er det centrale værktøjssæt til udvikling af applikationer i C#. Det inkluderer CLR (Common Language Runtime), biblioteker og compilere, der er nødvendige for at køre og kompilere C#-kode.
Visual Studio er den førende IDE til C#-udvikling, der tilbyder avanceret fejlfinding, IntelliSense og et samlet miljø til at bygge og implementere applikationer. Andre populære muligheder inkluderer JetBrains Rider og Visual Studio Code, som med de rette udvidelser kan tilpasses til C#-udvikling.
For at bygge et C#-projekt ved hjælp af .NET CLI kan man bruge kommandoer som dotnet new
til at oprette et nyt projekt, dotnet build
til at kompilere koden og dotnet run
til at udføre applikationen. Processen med at oprette en konsolapplikation ville se sådan ud:
dotnet new console -n MyConsoleApp
cd MyConsoleApp
dotnet run
C# anvendes i en bred vifte af applikationer, herunder:
C# står som et kraftfuldt sprog sammenlignet med andre. Her er nogle bemærkelsesværdige ligheder og forskelle:
Oversættelse af kode mellem C# og andre sprog kan ofte lettes af kilde-til-kilde værktøjer, almindeligvis kendt som transpilers. For eksempel kan værktøjer som SharpKit konvertere C#-kode til JavaScript til webapplikationer, mens Bridge.NET tillader C# at blive kompileret til JavaScript eller HTML5-applikationer.
I mere specialiserede scenarier findes der biblioteker og værktøjer, der konverterer C# til andre sprog som Java eller Python, ofte med fokus på specifikke sprogfunktioner og paradigmer for at sikre en effektiv konverteringsproces.
For eksempel, når man oversætter fra C# til Python, skal udvikleren være opmærksom på at tilpasse typesystemet og hukommelsesstyringspraksis, da Pythons dynamiske typning og garbage collection-principper adskiller sig fra C#'s statiske typning og administrerede runtime.
Eksisterende værktøjer, der letter forskellige kodeoversættelser, inkluderer CodePorting til at konvertere .NET-applikationer til Java og Jitterbit til bredere integrationsløsninger. Hvert værktøj har sine styrker, og valget afhænger af projektets specifikationer og ønskede resultater.