C sharp

Tämä artikkeli kertoo ohjelmointikielestä. C♯ on anglosaksinen musiikkimerkintä korotetulle C-sävelelle, jonka nimi on suomalaisittain ”cis”.
Teknisten rajoitusten vuoksi artikkelin yllä näkyvä otsikko on virheellisessä muodossa. Oikea kirjoitustapa on: C#.
C#
Paradigma olio-ohjelmointi
Tyypitys vahva, staattinen
Yleinen suoritusmalli tulkattava
Muistinhallinta automaattinen
Julkaistu 2000
Kehittäjä Microsoft
Merkittävimmät toteutukset .NET, Mono
Vaikutteet C++, Smalltalk, Java

C# (lausutaan engl. see sharp) on Microsoftin .NET-alustalle kehitetty ohjelmointikieli. C# julkaistiin kesäkuussa vuonna 2000 ja kehitettiin yhdistämään C++:n tehokkuus ja Visual Basicin tuottavuus.[1]

C# on vahvasti tyypitetty, eli muuttujille tulee määritellä jokin tietotyyppi, kuten kokonaisluku, luokka tai merkkijono. Kielessä ja kääntäjässä on myös useita ohjelmointivirheitä vähentäviä toimintoja, esimerkiksi alustamattomien muuttujien käytöstä varoitetaan.

Historia

C#:n kehittäjinä mainitaan Anders Hejlsberg, Scott Wiltamuth ja Peter Golde.[1] Hejlsberg tuli Microsoft-yhtiön palvelukseen Borlandilta. Anders Hejlsberg oli ennen C#:a mukana Turbo Pascalin, Delphin ja J++:n kehitystyössä.

C#:n kehityksen päätavoitteena oli luoda useanlaisiin ympäristöihin soveltuva helppokäyttöinen, oliopohjainen ohjelmointikieli, jonka kansainvälistäminen olisi myös helppoa. C#:n tavoitteena oli lisäksi yhdistää:[2][3][4]

  • C:n syntaksi
  • Delphin tai C++:n tehokkuus
  • Javan (vaikkakin korostettu, että C# ei ole Java-klooni[5]), Visual Basicin tai Delphin tarjoama helppokäyttöisyys.
  • Javan ja jo 70-luvun alussa käytetyn UCSD p-Systemin (Pascal) välikoodin käyttö.

Toteutus

Microsoft on pyrkinyt saamaan C#:lle virallisen standardisoinnin. ISO-standardi ISO/IEC 23270:2003 on julkaistu vuonna 2003[6]. Standardin pohjalta ollaan tekemässä itsenäisiä toteuksia kielestä, esimerkiksi:

Rakenne

C# on korkeamman tasoinen, olioperusteinen, vahvasti tyypitetty kieli. Vahva tyypitys tarkoittaa, että muuttujilla on oltava aina jokin tietotyyppi, esimerkiksi kokonaisluku, luokka tai merkkijono. (C# kuitenkin mahdollistaa var-sanan käytön, kun tyyppi on niin lukijalle kuin kääntäjällekin selvä.) Korkea abstraktiotaso ilmenee erityisesti siinä, että muistinhallinta on automatisoitu eli automaattinen roskienkeräys vapauttaa muistia käyttöön sitä mukaa, kun objekti ei ole enää ohjelman saavutettavissa.[7]

C# muodostuu nimiavaruuksista (namespace), näissä olevista tyypeistä (esim. class) ja näissä määritellyistä jäsenistä, kuten datasta, funktioista, perustyypistä, rajapinnoista ja operaattoritoteutuksista. Tyyppien avulla luodaan (new) muuttujia, jotka sisältävät referenssin yhteen (arvotyyppi) tai useampaan (referenssityyppi) objektiin.[7]

C#-tyyppijärjestelmä on yhtenäinen ja sen avulla voidaan määritellä

  • yksinkertaiset arvotyypit (esim. int), jotka sisältävät numeron, merkin tai totuusarvon
  • null-arvotyypit (esim. int?) jotka sisältävät jonkin arvotyypin lisäksi null-arvon
  • enum-arvotyypit (enum E {...}), jotka sisältävät joukon vakioarvoja
  • tuple-arvotyypit ((T1, T2, ...)), jotka sisältävät yksinkertaisen joukon arvotyyppejä
  • struct-arvotyypit (struct E {...}), jotka sisältävät monimutkaisemman joukon arvotyyppejä
  • taulukkotyypit (esim. int[][])
  • luokkatyypit (class C {...}, string), jotka sisältävät dataa ja funktioita
  • rajapintatyypit (interface I {...})
  • delegaattityypit (delegate int D(...)), jotka sisältävät referenssin tiettyyn itsenäisesti käytettävään funktioon
  • record-tyypit (record struct tai record class), jotka sisältävät arvojen lisäksi tiettyjä synteettisiä jäseniä.[7]

Tyypin jäseniä voivat olla

  • kentät eli tyypin sisäiset muuttujat
  • vakiot eli muuttujat, joiden arvo vakioidaan käännöksen aikana
  • ominaisuudet, joka lukevat ja kirjoittavat arvoja
  • metodit, jotka määrittelevät luokan toiminnot
  • alustaja, joka luo tyypistä uuden objektin
  • indeksoija, joka lukee ja kirjoittaa indeksiarvoja
  • tapahtumat, joka ovat kenttiä, joiden muutoksiin käyttäjä reagoi tapahtumankäsittelijöillä
  • operaattorit, jotka määrittelevät matemaattisten operaattoreiden (esim. == tai +) toiminnan ja
  • finalisoija, joka vapauttaa resursseja roskienkeräyksen yhteydessä (määritellään harvoin).[7]

Luokka- ja rajapintatyyppejä organisoidaan perimähierarkioiksi niin, että kaikkien luokkien käyttämät jäsenet (data ja funktiot) löytyvät hierarkian abstrakteimmasta luokasta ja uudet luokat lisäävät yhä spesifisempiä jäseniä tarpeen mukaan. Tällöin luokkatyyppi määritellään tyylillä class AliTyyppi : Perustyyppi {...} tai interface Alityyppi : PerustyyppiI, PerustyyppiII {...}.[7]

Kaikkia ylätyypin jäseniä ei kuitenkaan ole pakollista periä sellaisenaan (polyformia). Jos esim. ylätyypin metodi on määritelty avainsanalla virtual, alatyyppi voi määritellä metodin uudelleen override-avainsanalla. Alatyyppi voi myös piilottaa ylätyypin jäsenen käyttämällä new-avainsanaa tai keskeyttää virtuaalisen jäsenen periytymisen sealed-avainsanalla.[7]

Luokka-, tietue-, rajapinta- ja delegaattityypit hyväksyvät myös parametreja, mikä mahdollistaa geneeristen tyyppien luomisen. Tällöin esim. luokkatyyppi määritellään tyylillä class Nimi<Tyyppi, Tyyppi> {...}.[7]

Tyyppien jäsenien näkyvyyttä ja muutettavuutta ohjelmissa säädellään avainsanoilla kuten public, private, protected, static, readonly, const, override, abstract, virtual ja sealed.[7]

Lausekkeisiin kuuluvat muun muassa

  • valintalausekkeet if ja switch
  • toistolausekkeet for, while, do ja foreach
  • siirtolausekkeet break, continue, goto, throw, return ja yield
  • poikkeuksien hallinnan try, catch ja finally
  • alustamisen new
  • rinnakkaislaskennan async ja await sekä
  • parametrimääreet ref, out, in ja params.[7]

Mainittavia operaattoreita ovat esim. ??-operaattori, joka palauttaa jälkimmäisen lausekkeen arvon edellisen ollessa null, ja ns. Elvis-operaattori ehto ? seuraus : vaihtoehto.[7]

C# tukee suoraan myös funktionaalisia tekniikoita, vaikka nämäkin perustuvat tyyppeihin. Delegaattityypit mahdollistavat itsenäiset funktiot. Hahmonsovitus onnistuu käyttämällä is ja switch lausekkeita. Alaviiva-muuttuja ja objekti-dekonstruktio mahdollistavat joustavan sijoittamisen funktioista uusiin muuttujiin. Lambda-lausekkeet ovat kielessä muotoa esim. (double x) => x * 2.0. Ennen kaikkea LINQ lisää kieleen hyvin deklaratiivisen menetelmän poimia tietoa datarakenteista lausekkeiden kuten from..in, where, orderby, group..by..into, join..in..on..equals, select..into ja let avulla. (LINQ toimii siis kuin SQL tietokannoissa.)[7]

Lisäksi kieleen kuuluvat attribuutit, jotka ovat tapa liittää tyyppeihin metadataa. Nämä merkitään ennen haluttua tyyppiä esim. [Author("E. Sukunimi")].[7]

Lähdetiedostot (.cs) käännetään yhdeksi ns. assembly-tiedostoksi (.dll tai .exe), joka sisältää välimuotoista koodia ja metadataa, mikä taas käännetään tarvittaessa prosessorille sopivalle konekielelle. C#-ohjelma aloittaa ajon ylimmän tason lausekkeesta tai Main-metodista.[7]

Esimerkki

Hello World -ohjelma.

// Lähdetiedosto esim. "HelloWorld.cs"
using System;

namespace HelloWorld
{
    class Program
    {
        static void Main()
        {
            Console.WriteLine("Hello world!");
        }
    }
}

Katso myös

Lähteet

Kirjallisuutta

Aiheesta muualla

Tämä tietotekniikkaan liittyvä artikkeli on tynkä. Voit auttaa Wikipediaa laajentamalla artikkelia.

Read other articles:

هذه المقالة يتيمة إذ تصل إليها مقالات أخرى قليلة جدًا. فضلًا، ساعد بإضافة وصلة إليها في مقالات متعلقة بها. (أبريل 2019) تيم بيلي   معلومات شخصية الميلاد 11 مايو 1979 (44 سنة)  أبردين  مواطنة المملكة المتحدة  الطول 176 سنتيمتر  الوزن 78 كيلوغرام  الحياة العملية المدرسة ا�...

Денис Миколайович Меньшов Персональні дані Дата  народження 25 січня 1978(1978-01-25) (45 років) Країна  Росія Зріст 180 см Вага 65 кг Командна інформація Дисципліна Шосейні велоперегони Тип гонщика універсал Професійні команди 2000–20042005–201020112012–2013 BanestoRabobankGeox–TMCKatusha[1] Г�...

Artikel ini sebatang kara, artinya tidak ada artikel lain yang memiliki pranala balik ke halaman ini.Bantulah menambah pranala ke artikel ini dari artikel yang berhubungan atau coba peralatan pencari pranala.Tag ini diberikan pada April 2016. Shiawase no Jikan幸せの時間 MangaPengarangYasuyuki KunitomoPenerbitFutabashaImprintAction ComicsTerbit1997 – 2001 Drama televisiSaluranasliFuji TVTayang 5 November 2012 – Desember 2012  Portal anime dan manga Shiawase no Jikan (幸せの

Генріх XIIIHeinrich XIII Герцог Баварії 1253 — 1255 Попередник: Оттон II Пфальцграф Рейнський 1253 — 1255 Попередник: Оттон II Спадкоємець: Людвіг II Герцог Нижньої Баварії 1255 — 1290 (під іменем Генріх I) Спадкоємець: Отто IIIЛюдвіг IIIСтефан I   Народження: 19 листопада 1235(1235-11-19)Л

Ahmad SahroniAnggota Dewan Perwakilan Rakyat Republik IndonesiaPetahanaMulai menjabat 1 Oktober 2014Daerah pemilihanJakarta III Informasi pribadiLahirAhmad Sahroni8 Agustus 1977 (umur 46)Kebon Bawang, Tanjung Priok, Jakarta UtaraKebangsaanIndonesiaPartai politik  NasDemSuami/istriFeby BelindaProfesiPolitikus, PengusahaSunting kotak info • L • B H. Ahmad Sahroni, S.E., M.I.Kom. (lahir 8 Agustus 1977) adalah seorang pengusaha dan politisi Indonesia dari Partai N...

هذه المقالة يتيمة إذ تصل إليها مقالات أخرى قليلة جدًا. فضلًا، ساعد بإضافة وصلة إليها في مقالات متعلقة بها. (نوفمبر 2023) هذه مقالة غير مراجعة. ينبغي أن يزال هذا القالب بعد أن يراجعها محرر مغاير للذي أنشأها؛ إذا لزم الأمر فيجب أن توسم المقالة بقوالب الصيانة المناسبة. يمكن أيضاً ...

Medical conditionLinguatulosisLinguatulaSpecialtyInfectious disease Linguatulosis is a condition associated with the organism Linguatula serrata. The usual final host for Linguatula serrata is a carnivore, like a dog or jackal, and the species is sometimes known as the dog tongueworm for this reason.[1] More generally, linguatulosis can be considered a form of pentastomiasis, which refers to all diseases caused by pentastomids, including porocephaliasis. This disease is often accident...

MegamendungKecamatanNegara IndonesiaProvinsiJawa BaratKabupatenBogorPopulasi • Total- jiwaKode Kemendagri32.01.26 Kode BPS3201120 Desa/kelurahan12 desa Curug Panjang di Megamendung Megamendung adalah sebuah kecamatan di Kabupaten Bogor, Provinsi Jawa Barat, Indonesia. Kecamatan Megamendung ini berada di kawasan wisata puncak yang merupakan jalur utama wisata bagi wisatawan dari Jabodetabek. Megamendung merupakan kecamatan yang dimekarkan dari Kecamatan Cisarua, Bogor pada tah...

De Zwaan van Heist-op-den-Berg Het wapen van Heist-op-den-Berg werd reeds op 23 juli 1846, 16 jaar na de onafhankelijkheid, aan de Belgische gemeente Heist-op-den-Berg toegekend. Blazoenering De zwaan is onlosmakelijk verbonden met de gemeente. De aanvraag aan de nog jonge Belgische regering om dit wapen officieel te mogen gebruiken gebeurde echter niet met behulp van een heraldische vocabulaire. Officieel luidde de aanvraag zo: Een zwaan van witte kleur, gezeten op de kruin van een berg met ...

First Servile WarPart of the Servile WarsMaximum territory controlled by the slavesDate135–132 BCLocationSicily, AchaeaResult Roman victoryBelligerents Roman Republic Slaves of SicilyCommanders and leaders L. Cornelius Lentulus (135)L. Plautius Hypsaeus (135)T. Manlius Torquatus (134)C. Fulvius Flaccus (134)T. Manlius Torquatus (134)L. Calpurnius Piso Frugi (133)M. Perperna (133–132)P. Rupilius (132) Eunus (POW) Cleon †Comanus † vteRoman Servile Wars First Second Thi...

National Iranian Petrochemical Company (NIPC)TypeState-owned companyIndustryChemicalsFounded1964; 59 years ago (1964)HeadquartersTehran, IranKey peopleMorteza Shahmirzaie, Chief Executive OfficerJavad Owji, ChairmanProductsChemicals and intermediates, industrial polymers, fertilizers and metalsRevenue$20.4 billion USD (2015)Number of employees37,000 (2015)Websitewww.nipc.ir The National Petrochemical Company (NPC) (Persian: شرکت ملی صنایع پتروشیمی, Shirka...

Book by Susan Orlean John Laroche redirects here. For the British politician, see John LaRoche (MP). The Orchid Thief AuthorSusan OrleanGenreNon-fiction, biographyPublisherRandom HousePublication date1998Media typePrintPagespp. 284ISBN978-0-679-44739-9 The Orchid Thief is a 1998 non-fiction book by American journalist Susan Orlean, based on her investigation of the 1994 arrest of horticulturist John Laroche and a group of Seminoles in south Florida for poaching rare orchids in the Fakaha...

College affiliated with West Bengal State University. Barasat. This article needs additional citations for verification. Please help improve this article by adding citations to reliable sources. Unsourced material may be challenged and removed.Find sources: Barasat College – news · newspapers · books · scholar · JSTOR (February 2012) (Learn how and when to remove this template message) Barasat CollegeTypeUndergraduate collegeEstablished1972 (1972)...

Cricketer For the New Zealand swimmer, see Melanie Jones (swimmer). Mel JonesOAMJones during the 2009 Women's Cricket World CupPersonal informationFull nameMelanie JonesBorn (1972-08-11) 11 August 1972 (age 51)Barnstaple, DevonBattingRight-handedBowlingRight-arm medium paceInternational information National sideAustraliaTest debut (cap 134)6 August 1998 v EnglandLast Test22 February 2003 v EnglandODI debut (cap 82)7 February 1997 v Pak...

PausYohanes XVIIIAwal masa kepausanJanuari 1004Akhir masa kepausanJuni 1009PendahuluYohanes XVIIPenerusSergius IVInformasi pribadiNama lahirFasaniusLahirtanggal tidak diketahuiRapagnano, ItaliaMeninggalJuni 1009Roma, ItaliaPaus lainnya yang bernama Yohanes Paus Yohanes XVIII, nama lahir Fasanius (???-Juni 1009), adalah Paus Gereja Katolik Roma sejak Januari 1004 hingga Juni 1009. Didahului oleh:Yohanes XVII Paus1004 – 1009 Diteruskan oleh:Sergius IV lbs Paus Gereja Katolik Daftar paus ...

Ardwick A.F.C. 1891–92 football seasonArdwick A.F.C.1891–92 seasonManagerLawrence FurnissFootball Alliance8thFA CupFirst qualifying roundTop goalscorerLeague: Morris (10 goals)All: Morris (10 goals)Highest home attendance12,000 vs Lincoln City(28 November 1891)Lowest home attendance4,000 vs Small Heath(2 January 1892)← 1890–911892–93 → The 1891–92 season was Ardwick A.F.C.'s first ever season of league football, joining the Football Alliance in its third and fi...

2019 non-fiction book by Mason Funk The Book of Pride: LGBTQ Heroes Who Changed The World First editionAuthorMason FunkLanguageEnglishPublisherHarperCollinsPublication dateMay 2019ISBN978-0-06-257170-0 Paperback The Book of Pride: LGBTQ Heroes Who Changed The World is a 2019 book by Mason Funk. It contains interviews and biographies of members of the LGBT community and advocates compiled by The OUTWORDS Archive. It was published by HarperCollins. There is a mix of well-known and unsung heroes...

Academy in London, EnglandGeorge Mitchell SchoolGeorge Mitchell School, 2017 building.AddressFarmer RoadLeytonLondon, E10 5DNEnglandInformationTypeAcademyEstablished1900Local authorityWaltham ForestTrustPartnership LearningDepartment for Education URN145106 TablesOfstedReportsHeadteacherMr Saeed HussainGenderCoeducationalAge3 to 16Enrolment951Websitehttp://www.georgemitchellschool.com/ George Mitchell School is a coeducational all-through school located in Leyton in London, England. It is...

Hydroelectric power plant in Massachusetts, United States This article relies largely or entirely on a single source. Relevant discussion may be found on the talk page. Please help improve this article by introducing citations to additional sources.Find sources: Red Bridge Hydro – news · newspapers · books · scholar · JSTOR (September 2022) Red Bridge HydroOfficial nameRed Bridge HydroelectricCountryUnited StatesLocation5 Red Bridge Rd Wilbraham, Massa...

Wilhelm MarxKanselir JermanRepublik WeimarMasa jabatan17 Mei 1926 – 12 Juni 1928PresidenPaul von HindenburgWakilOskar HergtPendahuluHans LutherPenggantiHermann MüllerMasa jabatan30 November 1923 – 15 Januari 1925PresidenFriedrich EbertWakilKarl JarresPendahuluGustav StresemannPenggantiHans LutherPresiden Menteri Negara Bebas PrusiaMasa jabatan18 Februari 1925 – 6 April 1925PendahuluOtto BraunPenggantiOtto Braun Informasi pribadiLahir(1863-01-15)15 Januari 186...