C# (udtales See-sharp på engelsk) er et multi-paradigme programmeringssprog, som omfatter imperativ, funktionel, generisk, objektorienteret (klasse-baseret) og komponent-orienterede programmeringsdiscipliner. C# er designet til at være et enkelt, moderne, generelt anvendeligt, objektorienteret programmeringssprog[1].
Det bliver udviklet af Microsoft indenfor .NET, og er senere blevet godkendt som en standard af Ecma (ECMA-334[1]) og ISO (ISO/IEC 23270). C# er et af sprogene, som er designet for Common Language Infrastructure (CLI). C# blev designet af danskeren Anders Hejlsberg. Microsofts C# Compiler Team er ledet af en anden dansker, Mads Torgersen. C# er baseret på programmeringssprogene C++ og Java.
Fra november 2022 er den seneste stabile version af sproget C# 11.0, som blev udgivet i 2022 i .NET 7.0.[2][3]
Ecma-standarden angiver disse designmål for C#:[4]
Kernesyntaksen i C#-sproget ligner den for andre C-sprog, såsom C, C++ og Java, især:
I december 2001 blev C# standardiseret af ECMA (ECMA-334) og i 2003 af ISO (ISO/IEC 23270).
Navnet "C sharp" blev inspireret af musikalsk notation, hvor en "sharp" (krydstegn for node på dansk) angiver, at den skrevne node skal gøres en halvtone (eller semi-tone) højere.[6] Dette er tilsvarende navngivningen af C++, hvor ++ angiver at en variabel skal øges med 1.
Tilfældigvis ligner den skarpe firkant fire sammensatte plustegn. Hvor C blev forbedret til C++, blev C++ selv forbedret til C++++ (det vil sige, C#).[7]
Af hensyn til tekniske begrænsninger på displays (standard skrifttyper, browsere osv.) og den omstændighed, at kryds-symbolet (♯, U+266F, Krydstegn for node) ikke findes på gængse tastaturer. Derfor blev nummertegnet (#, U0023, Number Sign) valgt[hvem traf dette valg?] til at repræsentere sharptegnet i programmeringssprogets skrevne navn.[kilde mangler] Denne konvention anvendes i ECMA-334 C# Language Specification.[1] Men når det er praktisk muligt[bør uddybes] at anvende (for eksempel i reklamer, bogomslag og på indpakning), bruger Microsoft det musikalske krydstegn for noder.
Endelsen sharp er blevet brugt af en række andre .NET sprog, der er varianter af eksisterende sprog, herunder J# (et .NET sprog også designet af Microsoft, som er afledt af Java 1.1), A# (fra Ada), og funktionelle F#. Den oprindelige gennemførelse af Eiffel for .NET blev kaldt Eiffel#, et navn der nu er forældet siden hele Eiffel-sproget nu understøttes. Suffikset er også blevet brugt til kodebiblioteker, som f.eks. Gtk# (en .NET indpakning af GTK+ og andre GNOME biblioteker), Cocoa# (en .NET indpakning for Cocoa).
Selvom historien og udtalen af navnet antyder, at navnet burde skrives C♯ – hvilket det også bliver på flere af Microsofts bøger – så skrives det i ECMA's sprogdefinition C#.
Et simpelt "Hello world-program" i C#, der kører i en kommandoprompt på en Windows maskine:
using System;
class HelloWorld
{
static void Main()
{
Console.WriteLine("Hello world!");
}
}
Ovenstående giver følgende output i kommandoprompten:
Hello world!
Ligesom i mange andre programmering sprog så har man noget der hedder "variabler". F.eks. hvis man vil lave en variabel som indeholder tekst, så hedder det en "string" (en steng).
Her er en liste over nogle af de forskellige variabler som er i C#:
string // Kan indeholde tekst
int // Tal fra -2,147,483,648 op til 2,147,483,647
float // Tal fra -3.4 × 10^38 op til +3.4 × 10^38
byte // Tal fra 0 til 255
sbyte // Tal fra -128 til 127
Her er et eksempel på hvordan man kan bruge "string" variabler i et program:
using System;
class HelloWorld
{
static void Main()
{
string Tekst_1 = "Hello";
string Tekst_2 = "world!";
Console.WriteLine("{0} {1}", Tekst_1, Tekst_2);
}
}
Ovenstående giver følgende output i kommandoprompten:
Hello world!
I C# angiver to skråstreger (//), at det efterfølgende skal opfattes som en kommentar af compileren, og derfor ikke skal fortolkes. Dette er en overlevering fra C++:
public class Foo
{
// Dette er en kommentar
public static void Bar(int firstParam) { } // En kommentar
}
En kommentar der spænder over flere linjer, indikeres ved brug af skråstreg/stjerne-notation (/*) og afsluttes igen med stjerne/skråstreg (*/). Alt hvad der står i mellem bliver af compileren opfattet som en kommentar. Det bruges ofte til at springe kode over, som måske ikke ønskes afviklet, men måske skal genindsættes senere. Eksempel:
public class Foo
{
/* En kommentar
der spænder over flere linjer
*/
public static void Bar(int firstParam) { }
}
Når det kommer til programmering i C# samt andre sprog, så kører meget af koden på "if" kommandoer. Her under kan du se hvordan de bruges i selve koden:
using System;
class HelloWorld
{
static void Main()
{
int a = 0;
if (a == 0)
{
Console.WriteLine("Variablen a er 0");
}
else
{
Console.WriteLine("Variablen a er ikke 0");
}
}
}
Så som der ses ovenfor så er det en "hvis" og "hvis ikke". Ovenfor står der: Hvis variablen 'a' er lig med 0, så skal den skrive følgende, ellers så skal den skrive at det ikke er.
![]() |
Wikibooks har en bog, der er relateret til denne artikel: |