C# (lausutaan "see sharp") on yleiskäyttöinen, moderni ja tyypitetty tietokoneohjelmointikieli, joka on suunniteltu erityisesti .NET-alustaa varten. Kielen kehitti Microsoft, ja sitä johtaa Anders Hejlsberg. C# on tarkoitettu kirjoittamaan turvallista ja tehokasta hallittua (managed) koodia: se kääntyy .NETin välikoodiksi (IL), jota .NET-toteutus suorittaa JIT- tai AOT-käännöksen avulla. Kieli tukee olio-ohjelmointia, geneerisiä tyyppejä, tapahtumia, delegaatteja sekä laajaa standardikirjastoa, ja sitä käytetään laajasti esimerkiksi työpöytä-, web-, mobiili-, pilvi- ja pelikehityksessä (mm. Unity).

Lyhyt historia ja versiot

C# syntyi 2000-luvun alussa Microsoftissa osana .NET-hanketta. Ensimmäiset standardisoinnit tehtiin ECMA:ssa ja myöhemmin ISO:ssa. Kielen kehitys on ollut aktiivista: joka vuosi tai parin välein on julkaistu uusia versiota, jotka ovat tuoneet merkittäviä kieliominaisuuksia ja suorituskykyparannuksia.

  • Varhaiset versiot: C# 1.0 ja 2.0 toivat perusominaisuudet ja generics-tuen.
  • LINQ ja funktionaaliset piirteet: C# 3.0 lisäsi LINQ:n ja lauseke-pohjaisen ohjelmoinnin helppouden.
  • Dynaaminen ja asynkroninen ohjelmointi: C# 4.0 toi dynaamisen tyypityksen ja C# 5.0 asynkronisuuden (async/await).
  • Modernit parannukset: C# 8.0 (2019) toi muun muassa nullable reference -tuen ja async streams. Seuraavissa versioissa (C# 9–11) ovat tulleet mm. record-tyypit, top-level statements, source generators, pattern matchingin laajennukset ja muita syntaktisia sekä suorituskykyyn liittyviä parannuksia.
  • Ajantasainen versio: Kielen kehitys jatkuu aktiivisesti; uusin vakaa julkaisu on C# 12 (osa .NET 8 -kokonaisuutta, julkaistu 2023), joka jatkaa kielen yksinkertaistamista, suoritustehon parantamista ja kielen laajentamista moderneihin ohjelmointitarpeisiin.

Keskeisiä piirteitä

  • Staattinen tyypitys: virheet havaitaan usein jo käännösaikana, mikä parantaa luotettavuutta.
  • Olion suuntautuneisuus: luokat, rajapinnat, perintä ja kapselointi.
  • Geneerisyys (generics): tyypin turvallisuus ilman suorituskykyhäviötä.
  • LINQ: kielen sisäinen tuki tietokanta- ja kokoelmahauille sekä transformaatioille.
  • Async/await: helppo asynkroninen ohjelmointi ilman monimutkaisia callback-rakenteita.
  • Nullable reference types: apuväline nollaviitteiden (null) aiheuttamien virheiden vähentämiseen.
  • Records ja immutability: helpottavat arvo- ja data-luokkien käsittelyä.
  • Suorituskykyominaisuudet: Span, stackalloc, ja muut optimoinnit suorituksen parantamiseksi.
  • Hyvä työkalu- ja ekosysteemi: Roslyn-kääntäjä (avoin lähdekoodi), Visual Studio, Visual Studio Code -laajennukset ja laaja kirjasto- ja paketointituki (NuGet).

Käyttökohteet

C# on monipuolinen: sitä käytetään

  • web-kehitykseen (ASP.NET Core, Blazor),
  • työpöytäsovelluksiin (WinForms, WPF),
  • mobiilisovelluksiin (Xamarin, .NET MAUI),
  • peli- ja reaaliaikaiseen grafiikkaan (Unity),
  • pilvipalveluihin ja mikro\-palveluarkkitehtuureihin (Azure, Docker),
  • ja sulautettuihin järjestelmiin tai IoT-ratkaisuihin.

Yhteenveto

C# on moderni, jatkuvasti kehittyvä ohjelmointikieli, joka yhdistää turvallisen staattisen tyypityksen, korkean abstraktion tason ja suorituskykyominaisuuksia. Se on tiiviisti integroitu .NET-ekosysteemiin ja tarjoaa vahvat työkalut sekä laajan kirjastovalikoiman monenlaisiin sovellusalueisiin. Kielen kehitys jatkuu aktiivisena, ja uudet versiot tuovat säännöllisesti sekä syntaktisia että suorituskykyyn liittyviä parannuksia.