Web Analytics
Privacy Policy Cookie Policy Terms and Conditions C sharp - Wikipedia

C sharp

C# (C sharp in het Engels) is ook een muzikale aanduiding voor een door een kruisteken met een halve toon verhoogde noot C, de cis.

C# (uitgesproken als "C sharp") is een object-georiënteerde programmeertaal ontwikkeld door Microsoft, en geaccepteerd als standaard door ECMA en ISO. C# heeft een object geörienteerde, procedurele syntax, gebaseerd op die van C++, met elementen van diverse andere programmeertalen (voornamelijk Delphi en Java).

De taal C# is samen met het .NET framework geïntroduceerd, en wordt beschouwd als een van de belangrijkste talen voor het platform.

Naast desktopapplicaties en serverapplicaties (i.c.m. ASP.NET) wordt de taal ook gebruikt voor mobiele apparaten als PDA's, smartphones, i.c.m. het .NET Compact Framework.

Inhoud

[bewerk] Voorbeeld

Hieronder staat een voorbeeld van een kleine Hello world applicatie, geschreven in C#:

using System;

public class Hello {
        static void Main() {
                Console.WriteLine("Hello World");
                
                // Door de regel hier onder sluit de applicatie zich
                // niet meteen, maar pas nadat een toets is ingedrukt
                
                Console.ReadKey();
        }
}

Een bronbestand van C sharp wordt opgeslagen met 'cs'-bestandsextensie, bijvoorbeeld 'Hello.cs'.

[bewerk] Vergelijking met Java en C++

  1. Overerving: een klasse kan maar van 1 andere klasse overerven, maar kan wel meerdere interfaces implementeren. Een interface is een soort contract, waarin beschreven staat welke methoden een bepaalde klasse moet implementeren. Ook Java kent geen multiple inheritance, maar ondersteunt wel het implementeren van meerdere interfaces tegelijk. In C++ wordt het onderscheid tussen interfaces en (abstracte) basis-klassen niet gemaakt, en is multiple inheritance wél mogelijk.
  2. bool: er is geen impliciete conversie tussen bool en int zoals bij C++. Conversies kunnen - net als bij C++ en Java - worden uitgevoerd met behulp van typecasting. Daarnaast kunnen bij C# "primitieve" types als int en bool worden aangesproken als een object, waardoor een conversie als 5.ToString() mogelijk is.
  3. struct: Dit is een value type terwijl een class een reference type is. Dit is een verschil met C++ waar een struct eigenlijk een public class voorstelt (een class waarvan alle parameters public zijn). Het verschil met Java is eenvoudiger: Java kent namelijk geen structs. Met structs kan worden voorkomen dat zeer veel kleine objecten de overhead van garbage collection met zich meedragen.
  4. delegate: Dit zijn type-safe function pointers. In Java bestaan delegates niet, en wordt vaak gebruikgemaakt van een inner class die een bepaalde interface met éen methode implementeert.
  5. base en override: base is zoals bij Java super en override is zoals bij Java en C++ virtual.
  6. preprocessor directive: wordt nu gebruikt voor conditionele compilaties, want er worden geen header files gebruikt in C#. Zie ook using. In Java is conditionele compilatie niet mogelijk (uiteraard kan wel de C/C++ preprocessor worden gebruikt op Java-broncode).
  7. operators: Hier bestaan extra operators t.o.v. C++, zoals de is, as, ?? en typeof, een subset hiervan bestaat ook in Java. Net als in C++ is operator overloading mogelijk in C#. In Java kan dit niet.
  8. Main: wordt nu op een Java-stijl gebruikt, zoals de algemene structuur van het programma.
  9. pointers: ref en out worden nu gebruikt om parameters by reference door te geven. Unsafe wordt gebruikt om expliciet pointers door te geven.
  10. strings: in tegenstelling tot C++ waar er geen speciale klasse is voor strings, maar een string gewoon een pointer naar een stuk geheugen is waar de string staat, gebruiken C# en Java beide een overkoepelende String-klasse. Deze zijn meestal 'copy-on-write' en zijn makkelijker aan te passen dan de C/C++ strings.
  11. foreach, in: laat toe om door arrays en collecties te itereren. Dit laat toe om deze een stuk makkelijker te doorlopen dan in C++ of Java waar men for-lussen nodig had en het einde ervan moest weten/zoeken. Sinds Java 5 (1.5) is een vergelijkbare syntaxis ook aanwezig.
  12. using: wordt gebruikt om naar andere namespaces te verwijzen zonder dat men telkens de volledige naam moet opgeven. Ook in Java is deze functionaliteit in de vorm van 'packages' aanwezig en kunnen packages geimporteerd worden met het import-statement.
  13. Destructor: net zoals bij Java is er automatic garbage collection, die er voor zorgt dat de programmeur geen rekening hoeft te houden met het opruimen van het geheugen. In C++ en C moet de programmeur dit wel zelf doen, wat hem natuurlijk meer mogelijkheden, maar ook meer verantwoordelijkheden geeft. (maar dit zou een van de redenen zijn waardoor C++ nog steeds een van de snelste en meest gebruikte programmeertalen is). Het is wel mogelijk in C# om zogenaamde 'unsafe' (unmanaged) code te schrijven met pointers, net als in C++ en C.
  14. Machinecode vs. Byte code: C# en Java worden beide naar byte-code gecompileerd, die door een 'Virtuele Machine' (VM) wordt uitgevoerd, in tegenstelling tot een taal als C++, dat naar machinetaal wordt gecompileerd en rechstreeks door de processor wordt uigevoerd. Dit zorgt ervoor dat C++ niet op elk platform kan draaien (althans, niet zonder aanpassingen aan het programma) maar wel dat het sneller werkt omdat het niet in runtime nog gecompileerd moet worden. Dat betekent niet dat bytecode per definitie trager is: de VM die in runtime de bytecode omzet naar machinecode kan gebruikmaken van alle mogelijkheden van de computer waarop het programma wordt uitgevoerd; programma's in machine-code kunnen dat niet of minder goed, omdat dezelfde code op alle processoren moet kunnen worden uitgevoerd.

[bewerk] MSIL

MSIL ('Microsoft Intermediate Language') is de specificatie van de bytecode waar alle .NET-talen naartoe compileren. De MSIL-code wordt door de CLR ('common language runtime') at-runtime omgezet naar machine-code en uitgevoerd. Omdat de MSIL-code at-runtime wordt gecompileerd vlak voor deze wordt aangeroepen, spreekt men wel van JIT (Just In Time)-compilatie. MSIL is te vergelijken met de bytecode in Java's .class-bestanden. Ook Java's VM werkt op eenzelfde manier als de CLR van .NET.

[bewerk] Kritiek

Door de vele overeenkomsten tussen C# met .NET en Java is het trekken van een vergelijking haast onvermijdelijk. Veel kritiek op de taal C# komt dan ook uit de hoek van de Java-aanhangers.

Tegenstanders van Microsoft verwijten het bedrijf dat C# noch geheel Java is, noch geheel C++ en dat Microsoft hiermee een eigen standaard probeert te zetten, terwijl het geen originele ontwikkeling van dat bedrijf is. Doordat C# een standaard zou worden, kan de overgang bij bedrijven naar Microsoft .NET sneller verlopen, gezien dit de populairste achterliggende taal bij .NET is. De Microsoft applicaties die bij gebruik van .NET aangeschaft moeten worden, zullen dan de open source varianten, gebaseerd op Java, vervangen.

[bewerk] Externe links

Overzicht van programmeertalen

Industrieel:
Ada | AWK | Assembler | C | C++ | C# | COBOL | Fortran | F# | Java | JavaScript | Lisp | Object Pascal | Pascal | Perl | PHP | Python | Visual Basic
Academisch:
Eiffel | Haskell | Logo | ML | Prolog | Scheme | Smalltalk
Historisch:
ALGOL | APL | BASIC | Clipper | MUMPS | PL/I | PowerBuilder | Simula

 
THIS WEB:

aa - ab - af - ak - als - am - an - ang - ar - arc - as - ast - av - ay - az - ba - bar - bat_smg - be - bg - bh - bi - bm - bn - bo - bpy - br - bs - bug - bxr - ca - cbk_zam - cdo - ce - ceb - ch - cho - chr - chy - closed_zh_tw - co - cr - cs - csb - cu - cv - cy - da - de - diq - dv - dz - ee - el - eml - en - eo - es - et - eu - fa - ff - fi - fiu_vro - fj - fo - fr - frp - fur - fy - ga - gd - gl - glk - gn - got - gu - gv - ha - haw - he - hi - ho - hr - hsb - ht - hu - hy - hz - ia - id - ie - ig - ii - ik - ilo - io - is - it - iu - ja - jbo - jv - ka - kg - ki - kj - kk - kl - km - kn - ko - kr - ks - ksh - ku - kv - kw - ky - la - lad - lb - lbe - lg - li - lij - lmo - ln - lo - lt - lv - map_bms - mg - mh - mi - mk - ml - mn - mo - mr - ms - mt - mus - my - mzn - na - nah - nap - nds - nds_nl - ne - new - ng - nl - nn - no - nov - nrm - nv - ny - oc - om - or - os - pa - pag - pam - pap - pdc - pi - pih - pl - pms - ps - pt - qu - rm - rmy - rn - ro - roa_rup - roa_tara - ru - ru_sib - rw - sa - sc - scn - sco - sd - se - searchcom - sg - sh - si - simple - sk - sl - sm - sn - so - sq - sr - ss - st - su - sv - sw - ta - te - test - tet - tg - th - ti - tk - tl - tlh - tn - to - tokipona - tpi - tr - ts - tt - tum - tw - ty - udm - ug - uk - ur - uz - ve - vec - vi - vls - vo - wa - war - wo - wuu - xal - xh - yi - yo - za - zea - zh - zh_classical - zh_min_nan - zh_yue - zu

Static Wikipedia 2008 (no images)

aa - ab - af - ak - als - am - an - ang - ar - arc - as - ast - av - ay - az - ba - bar - bat_smg - bcl - be - be_x_old - bg - bh - bi - bm - bn - bo - bpy - br - bs - bug - bxr - ca - cbk_zam - cdo - ce - ceb - ch - cho - chr - chy - co - cr - crh - cs - csb - cu - cv - cy - da - de - diq - dsb - dv - dz - ee - el - eml - en - eo - es - et - eu - ext - fa - ff - fi - fiu_vro - fj - fo - fr - frp - fur - fy - ga - gan - gd - gl - glk - gn - got - gu - gv - ha - hak - haw - he - hi - hif - ho - hr - hsb - ht - hu - hy - hz - ia - id - ie - ig - ii - ik - ilo - io - is - it - iu - ja - jbo - jv - ka - kaa - kab - kg - ki - kj - kk - kl - km - kn - ko - kr - ks - ksh - ku - kv - kw - ky - la - lad - lb - lbe - lg - li - lij - lmo - ln - lo - lt - lv - map_bms - mdf - mg - mh - mi - mk - ml - mn - mo - mr - mt - mus - my - myv - mzn - na - nah - nap - nds - nds_nl - ne - new - ng - nl - nn - no - nov - nrm - nv - ny - oc - om - or - os - pa - pag - pam - pap - pdc - pi - pih - pl - pms - ps - pt - qu - quality - rm - rmy - rn - ro - roa_rup - roa_tara - ru - rw - sa - sah - sc - scn - sco - sd - se - sg - sh - si - simple - sk - sl - sm - sn - so - sr - srn - ss - st - stq - su - sv - sw - szl - ta - te - tet - tg - th - ti - tk - tl - tlh - tn - to - tpi - tr - ts - tt - tum - tw - ty - udm - ug - uk - ur - uz - ve - vec - vi - vls - vo - wa - war - wo - wuu - xal - xh - yi - yo - za - zea - zh - zh_classical - zh_min_nan - zh_yue - zu -

Static Wikipedia 2007:

aa - ab - af - ak - als - am - an - ang - ar - arc - as - ast - av - ay - az - ba - bar - bat_smg - be - bg - bh - bi - bm - bn - bo - bpy - br - bs - bug - bxr - ca - cbk_zam - cdo - ce - ceb - ch - cho - chr - chy - closed_zh_tw - co - cr - cs - csb - cu - cv - cy - da - de - diq - dv - dz - ee - el - eml - en - eo - es - et - eu - fa - ff - fi - fiu_vro - fj - fo - fr - frp - fur - fy - ga - gd - gl - glk - gn - got - gu - gv - ha - haw - he - hi - ho - hr - hsb - ht - hu - hy - hz - ia - id - ie - ig - ii - ik - ilo - io - is - it - iu - ja - jbo - jv - ka - kg - ki - kj - kk - kl - km - kn - ko - kr - ks - ksh - ku - kv - kw - ky - la - lad - lb - lbe - lg - li - lij - lmo - ln - lo - lt - lv - map_bms - mg - mh - mi - mk - ml - mn - mo - mr - ms - mt - mus - my - mzn - na - nah - nap - nds - nds_nl - ne - new - ng - nl - nn - no - nov - nrm - nv - ny - oc - om - or - os - pa - pag - pam - pap - pdc - pi - pih - pl - pms - ps - pt - qu - rm - rmy - rn - ro - roa_rup - roa_tara - ru - ru_sib - rw - sa - sc - scn - sco - sd - se - searchcom - sg - sh - si - simple - sk - sl - sm - sn - so - sq - sr - ss - st - su - sv - sw - ta - te - test - tet - tg - th - ti - tk - tl - tlh - tn - to - tokipona - tpi - tr - ts - tt - tum - tw - ty - udm - ug - uk - ur - uz - ve - vec - vi - vls - vo - wa - war - wo - wuu - xal - xh - yi - yo - za - zea - zh - zh_classical - zh_min_nan - zh_yue - zu

Static Wikipedia 2006:

aa - ab - af - ak - als - am - an - ang - ar - arc - as - ast - av - ay - az - ba - bar - bat_smg - be - bg - bh - bi - bm - bn - bo - bpy - br - bs - bug - bxr - ca - cbk_zam - cdo - ce - ceb - ch - cho - chr - chy - closed_zh_tw - co - cr - cs - csb - cu - cv - cy - da - de - diq - dv - dz - ee - el - eml - en - eo - es - et - eu - fa - ff - fi - fiu_vro - fj - fo - fr - frp - fur - fy - ga - gd - gl - glk - gn - got - gu - gv - ha - haw - he - hi - ho - hr - hsb - ht - hu - hy - hz - ia - id - ie - ig - ii - ik - ilo - io - is - it - iu - ja - jbo - jv - ka - kg - ki - kj - kk - kl - km - kn - ko - kr - ks - ksh - ku - kv - kw - ky - la - lad - lb - lbe - lg - li - lij - lmo - ln - lo - lt - lv - map_bms - mg - mh - mi - mk - ml - mn - mo - mr - ms - mt - mus - my - mzn - na - nah - nap - nds - nds_nl - ne - new - ng - nl - nn - no - nov - nrm - nv - ny - oc - om - or - os - pa - pag - pam - pap - pdc - pi - pih - pl - pms - ps - pt - qu - rm - rmy - rn - ro - roa_rup - roa_tara - ru - ru_sib - rw - sa - sc - scn - sco - sd - se - searchcom - sg - sh - si - simple - sk - sl - sm - sn - so - sq - sr - ss - st - su - sv - sw - ta - te - test - tet - tg - th - ti - tk - tl - tlh - tn - to - tokipona - tpi - tr - ts - tt - tum - tw - ty - udm - ug - uk - ur - uz - ve - vec - vi - vls - vo - wa - war - wo - wuu - xal - xh - yi - yo - za - zea - zh - zh_classical - zh_min_nan - zh_yue - zu