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.