C Skarp

C#
Utvikler(e)
Microsoft
https://docs.microsoft.com/en-us/dotnet/csharp/ , https://docs.microsoft.com/de-de/dotnet/csharp/ , https://docs.microsoft.com/ja -jp/dotnet/csharp/ , https://docs.microsoft.com/fr-fr/dotnet/csharp/ og https://docs.microsoft.com/it-it/dotnet/csharp/
Generell informasjon
Vanlige utvidelser .cs .csx .cshtml .razor
Paradigme Multiparadigme : strukturert , imperativ , objektorientert , hendelsesdrevet , funksjonell , generisk , reflekterende
Dukket opp i 2000
Designet av Microsoft
Siste stabile versjon 10.0 (21. mars 2022 (6 måneder og 27 dager))
Siste versjon i tester 11.0
type system Statisk , dynamisk , sterk , sikker, vurdert
implementeringer Microsoft .NET , Microsoft .NET Core , Mono og DotGNU
dialekter , Spec Sharp, Polyfonisk C#
påvirket av Java , C++ , Eiffel , Modula-3 , Pascal
har påvirket D , F# , Java 5 , Vala
Operativsystem Multiplattform

"C#" (uttales cii sharp på engelsk) er et multi -paradigme programmeringsspråk utviklet og standardisert av Microsoft - selskapet som en del av .NET - plattformen , som senere ble godkjent som en standard av ECMA (ECMA-334) og ISO ( ISO /IEC23270). C# er et av programmeringsspråkene designet for Common Language Framework .

Dens grunnleggende syntaks stammer fra C / C++ og bruker .NET-plattformobjektmodellen, som ligner på Java , selv om den inkluderer forbedringer avledet fra andre språk.

Navnet C Sharp var inspirert av ♯ - tegnet , som leses som skarpt på engelsk for notasjon. Det er et ordspill, siden "C#" betyr musikalsk sett "C skarp", der symbolet # indikerer at en tone (i dette tilfellet C, representert av C ) må være en halvtone høyere. Dette er en metafor for overlegenheten til C# i forhold til forgjengeren C++ og henspiller igjen på den samme metaforen som ble utviklet for å gi C++ navnet. [ 1 ] I tillegg kan # -symbolet tenkes som foreningen av fire + -symboler , og dermed fortsette følelsen av progresjon til C-språkene.

Selv om C# er en del av .NET-plattformen, er det et API , mens C# er et eget programmeringsspråk designet for å bygge programmer på toppen av plattformen. Det er allerede en implementert kompilator som gir Mono - DotGNU- rammeverket , som genererer programmer for forskjellige plattformer som Microsoft Windows , Unix , Android , iOS , Windows Phone , Mac OS og GNU/Linux .

Historikk

Under utviklingen av .NET-plattformen ble klassebiblioteker opprinnelig skrevet ved hjelp av et administrert kodesystem kalt Simple Managed C (SMC). I april 1999 dannet Anders Hejlsberg et team med et oppdrag om å utvikle et nytt objektorientert språk . Dette navnet måtte endres på grunn av merkeproblemer, og ble kalt C#. [ 2 ] Klassebiblioteket for .NET-plattformen ble deretter overført til det nye språket, som senere ble modifisert av Joseth M.

Hejlsberg ledet utviklingsprosjektet C#. Tidligere hadde han allerede deltatt i utviklingen av andre språk som Turbo Pascal , Delphi og J++ .

Datatyper

C# inneholder tjue generelle kategorier av innebygde datatyper : verdityper og referansetyper . Begrepet verditype indikerer at disse typene direkte inneholder verdiene deres. Typer for å definere heltall :

Heltallsdatatype
Fyr BCL- ekvivalent Størrelse Intervall Betydning
byte System.Byte 8-bit (1-byte) 0 til 255 usignert heltall
sbyte System.SByte 8-bit (1-byte) -128 til 127 signert heltall
short System.Int16 16-bit (2-byte) -32.768 til 32.767 signert kort heltall
ushort System.UInt16 16-bit (2-byte) 0 til 65.535 Usignert kort heltall
int System.Int32 32-biters (4-byte) -2 147 483 648 til 2 147 483 647 fortegn mellom heltall
uint System.UInt32 32-biters (4-byte) 0 til 4.294.967.295 usignert mellomheltall
long System.Int64 64-biters (8-byte) -9,223,372,036,854,775,808 til 9,223,372,036,854,775,807 signert langt heltall
ulong System.UInt64 64-biters (8-byte) 0 til 18 446 744 073 709 551 615 Usignert langt heltall

Flytende kommatyper kan representere tall med brøkkomponenter. Det er to typer flytende kommatyper: flytende og dobbel . Dobbelttypen er den mest brukte typen fordi mange matematiske funksjoner i C#-klassebiblioteket bruker doble verdier . Den kanskje mest interessante flyttalltypen i C# er desimal , beregnet for bruk i pengeberegninger. Normal flytekomma-aritmetikk er gjenstand for en rekke avrundingsfeil når den brukes på desimalverdier. Desimaltypen eliminerer disse feilene og kan representere opptil 28 desimaler .

flyttallsdatatype
Fyr BCL- ekvivalent Størrelse Intervall Betydning
float System.Single 32-biters (4-byte) ±1,401298E−45 til ±3,402823E+38 kort flytepunkt
double System.Double 64-biters (8-byte) ±4,94065645841246E−324 til
±1,79769313486232E+308
langt flytepunkt
decimal System.Decimal 128-bit (16-byte) −7,9228162514264337593543950335 til
+7,9228162514264337593543950335
Monetært flytende punkt

Tegn i C # er ikke 8-bits store som i mange andre programmeringsspråk, men bruker i stedet 16-bits størrelse. Denne datatypen kalles charog bruker Unicode -kodingen . Det er ingen automatiske konverteringer fra heltallstype til char.

Karakterdatatype
Fyr BCL- ekvivalent Størrelse Intervall Betydning
char System.Char 16-bit (2-byte) '\u0000'en'\uFFFF' unicode-tegn

For logiske datatyper er det ingen automatiske konverteringer fra heltallstype til bool.

Logisk datatype
Fyr BCL- ekvivalent Størrelse Intervall Betydning
bool System.Boolean 8-bit (1-byte) trueentenfalse Sant eller usant

Bokstaver

Noen ganger er det lettere å bruke et tallsystem med base 16 i stedet for 10, i så fall lar C# deg spesifisere heltall i heksadesimalt format , og er definert ved å prependere 0x, for eksempel: , som 0xFFtilsvarer desimal . 255

C# har tegn kalt escape-sekvenser for å gjøre det lettere å skrive inn symboler som ikke har noen visuell representasjon på tastaturet.

C#, som C++, definerer en strengtype . Innenfor tegnstrengen kan escape-sekvenser brukes. En tegnstreng kan starte med symbolet @etterfulgt av en streng i anførselstegn ( "), i så fall har escape-sekvensene ingen effekt, og strengen kan spenne over to eller flere linjer.

heltall
desimal 245,[0..9]+
heksadesimal 0xF5,0x[0..9, A..F, a..f]+
langt heltall 12L
usignert langt heltall 654UL
flytende punkt
flyte 23.5F, 23.5f; 1.72E3F, 1.72E3f, 1.72e3F,1.72e3f
dobbelt 23.5, 23.5D, 23.5d, 1.72E3,1.72E3D
desimal 9.95M
tegn
røye 'a', 'Z','\u0231'
Kjeder
String "Hello, world"; "C:\\Windows\\",@"C:\Windows\"
rømningssekvenser
Varsel (bjelle) \a
Rekyl \b
sidefeed \f
ny linje \n
Bil retur \r
horisontal fane \t
vertikal fane \v
Null \0
enkelt sitat \'
dobbelt anførselstegn \"
omvendt stang \\

Variabler

Variabler er identifikatorer knyttet til verdier. De er deklarert som indikerer typen data som skal lagres og identifikatoren.

En identifikator kan:

En identifikator kan ikke:

Erklær en variabel:

int myNumber ; // Vi erklærer variabelen, men vi initialiserer den ikke med noen verdi.

For å tilordne en verdi til en variabel, er identifikatoren indikert, etterfulgt av likhetssymbolet ( =) og verdien vi vil at den skal lagre:

mittTall = 5 ; // Vi tildeler verdien '5' til den opprettede variabelen.

Du kan deklarere og tilordne en verdi samtidig:

int mittTall = 5 ; // Vi erklærer variabelen og tildeler verdien '5'.

Du kan også deklarere en variabel uten å spesifisere datatypen, ved å bruke nøkkelordslutningsmekanismen der kompilatoren bestemmer datatypen som skal tilordnes til variabelen og er kun tillatt for lokale variabler, ikke for parametere eller datamedlemmer. .var

var string = "Dette er en streng" ; var nummer1 = 5 ; var nummer2 = 4,5 ; var nummer3 = 4,5D ; var objekt = nytt objekt (); var resultat = matematikk . Pow ( 5 , 2 );

Variabeltypekonverteringer i C# er representert i følgende tabell der raden er kilden og kolonnen er destinasjonen.

Legende
rød Inkompatibel konvertering (I).
Grønn Automatisk eller implisitt konvertering (A).
Blå Eksplisitt konvertering (E).
Datatypekonverteringer
byte sbyte shorts kort int uint lang lang flyte dobbelt desimal røye bool
byte OG EN EN EN EN EN EN OG OG OG OG Yo
sbyte OG EN OG EN OG EN EN OG OG OG OG Yo
shorts OG OG OG EN EN EN EN OG OG OG OG Yo
kort OG OG OG EN EN EN EN OG OG OG OG Yo
int OG OG OG OG OG EN EN OG OG OG OG Yo
uint OG OG OG OG OG EN EN OG OG OG OG Yo
lang OG OG OG OG OG OG OG OG OG OG OG Yo
lang OG OG OG OG OG OG OG OG OG OG OG Yo
flyte OG OG OG OG OG OG OG OG EN OG Yo Yo
dobbelt OG OG OG OG OG OG OG OG OG OG Yo Yo
desimal OG OG OG OG OG OG OG OG OG OG Yo Yo
røye OG OG OG EN EN EN EN EN EN EN EN Yo
bool Yo Yo Yo Yo Yo Yo Yo Yo Yo Yo Yo Yo
  • Enhver implisitt konvertering forårsaker ikke tap av informasjon, avkorting eller avrunding .
  • Det er mulig (men ikke alltid tilfellet) at det i en eksplisitt konvertering er tap av informasjon, avkorting eller avrunding.
  • I enhver implisitt konvertering er destinasjonsdatatypen større enn kildedatatypen.
  • Den eksplisitte konverteringen gjøres ved å angi datatypen du vil konvertere til mellom parentes, etterfulgt av verdien:
lengdeverdi = 123 ; _ // Implisitt konvertering lang verdi = ( lang ) 123 ; // eksplisitt konvertering

I tillegg til å utføres innenfor en oppgave, skjer typekonverteringer også innenfor et uttrykk, siden begge operandene i hver operasjon må være av samme type. Hvis konverteringen er av den implisitte typen, utføres følgende algoritme i den rekkefølgen:

  1. Hvis en operand er decimal, blir den andre operanden transformert til decimal.
  2. Hvis en operand er double, blir den andre operanden transformert til double.
  3. Hvis en operand er float, blir den andre operanden transformert til float.
  4. Hvis en operand er ulong, blir den andre operanden transformert til ulong.
  5. Hvis en operand er long, blir den andre operanden transformert til long.
  6. Hvis en operand er uint, og hvis den andre operanden er av typen sbyte, shorteller int, blir begge transformert til long.
  7. Hvis en operand er uint, blir den andre operanden transformert til uint.
  8. Hvis det ikke er noen av de foregående tilfellene, blir de to operandene transformert til int.

Konstanter

Konstanter er uforanderlige verdier, og kan derfor ikke endres.

const

Når en konstant er deklarert med nøkkelordet const, må verdien også tildeles. Etter dette er konstanten låst og kan ikke endres. De er implisitt statiske ( static).

const dobbel PI = 3,1415 ;

readonly

I motsetning til const, krever det ikke at verdien tildeles samtidig som den deklareres. De kan være medlemmer av forekomsten eller statiske medlemmer av klassen ( static).

skrivebeskyttet dobbel E ; E = 2,71828 ;

Operatører

Kategori operatører
aritmetikk + - * / %
logisk ! && ||
på bitnivå & | ^ ~
Sammenkobling +
øke, avta ++ --
Forskyvning << >>
Relasjonell == != < > <= >=
Oppdrag =^= <<= >>= ??=
Medlemstilgang .
Indeksering [ ]
Omdannelse ( )
Betinget ? : ??
objektskaping new
type informasjon as is sizeof typeof
  • Aritmetiske operatorer fungerer på samme måte som i C og C++.
  • Resultatet av relasjonelle og logiske operatorer er en type verdi bool.
  • Kortslutningsoperatører evaluerer den andre operen bare når det er nødvendig.
  • Bitvise operatorer kan ikke brukes på bool, float, doubleeller typer decimal.

Kontrollinstruksjoner

if-else

if ( i == 2 ) { // ... } else if ( i == 3 ) { // ... } else { // ... }

switch

bryter ( i ) { tilfelle 1 : ... bryte ; case 2 : case 3 : ... break ; standard : ... pause ; }

for

for ( int i = 0 ; i < 10 ; ++ i ) { // ... }

while

while ( i < 10 ) { // ... }

do-while

gjør { // ... } mens ( sann );

foreach

foreach ( char c i charList ) { // ... }
  • , , , , , , , setningene if-elseer fori utgangspunktet whilede do-whilesamme switchsom returni breakC continue, C++ og Java.
  • Utsagnet foreach, akkurat som i Java, går gjennom elementene i en matrise eller samling. I denne syklusen krysses samlingen og variabelen mottar et element fra nevnte samling i hver iterasjon.
  • Uttalelsen gotobrukes fortsatt i C# til tross for kontroverser om bruken.

Metoder

  • Hver metode må være en del av en klasse, det er ingen globale metoder (funksjoner).
  • Som standard sendes parametere etter verdi. (Merk at lister og andre samlinger er variabler ved referanse (referanser til plassen som er reservert for den listen på stabelen) og at referansen sendes med verdi til metoden, men plassen som er reservert for listen er vanlig, så hvis du sletter et element gjør det også fra originalen).
  • Modifikatoren reftvinger parametere til å sendes ved referanse i stedet for etter verdi og tvinger variabelen til å initialiseres før parameteren sendes.
  • Modifikatoren outligner på modifikatoren ref, bortsett fra at du ikke er tvunget til å initialisere variabelen før du sender parameteren.
  • Når refog outendre en referanseparameter, sendes selve referansen ved referanse.
  • Modifikatoren paramsbrukes til å definere et variabelt antall argumenter som implementeres som en matrise.
  • En metode må ha maksimalt en enkelt parameter params, og dette må være den siste.
  • En metode kan returnere alle datatyper, inkludert klassetyper.
  • Siden arrays er implementert som objekter i C#, kan en metode også returnere en array (som skiller seg fra C++ ved at arrays ikke er gyldige returtyper).
  • C# implementerer metodeoverbelastning , to eller flere metoder kan ha samme navn så lenge de er forskjellige med parameterne.
  • Metoden Mainer en spesiell metode som programmets utgangspunkt viser til.

ref

void PassRef ( ref int x ) { if ( x == 2 ) { x = 10 ; } } int z = 0 ; PassRef ( ref z );

out

void PassOut ( ut int x ) { x = 2 ; } int z ; PassOut ( out z );

params

int MaxVal ( char c , params int [] nums ) { // ... } int a = 1 ; MaxVal ( 'a' , 23 , 3 , a , - 12 ); // Den første parameteren er obligatorisk, deretter kan du sette inn så mange heltall du vil

Sobrecarga de métodos

int Sum ( int x , int y ) { return x + y ; } int Sum ( int x , int y , int z ) { return x + y + z ; } int Sum ( params int [] tall ) { int Sum = 0 ; foreach ( int c i tall ) Sum += c ; retur Sum ; } Sum ( 1 , 2 ); // Vil kalle den første metoden. Sum ( 1 , 2 , 3 ); // Vil kalle den andre metoden. Sum ( 1 , 2 , 3 , 4 , 5 , 6 ) // Vil kalle den tredje metoden.

Main

offentlig statisk tomrom Main ( string [] args ) { // ... }

Matriser

  • I C# er arrays implementert som objekter.
  • Array-indekser starter på 0.
  • Siden C# implementerer arrays som objekter, har hver array en egenskap Lengthsom inneholder antall elementer den kan eller har allokert.

Deklarer en matrise:

int [] intArray = ny int [ 5 ];

Deklarer og initialiser en matrise (matrisestørrelse kan utelates):

int [] intArray = ny int [] { 1 , 2 , 3 , 4 , 5 };

Få tilgang til et element:

intArray [ 2 ]; // Returnerer verdien '3'

Erklær en flerdimensjonal matrise:

int [,] intMultiArray = ny int [ 3 , 2 ]; // 3 rader og 2 kolonner

Deklarer og initialiser en flerdimensjonal matrise (matrisestørrelse kan utelates):

int [,] intMultiArray = ny int [,] { { 1 , 2 }, { 3 , 4 }, { 5 , 6 } };

Få tilgang til et element i en flerdimensjonal matrise:

intMultiArray [ 2 , 0 ]; // Returnerer verdien '5'

Lær mer på: Array Tutorial (C# ) .

Klasser og objekter

  • En objektvariabel for en bestemt klasse lagrer ikke verdiene til objektet, men dets referanse (akkurat som Java)
  • Oppdragsoperatøren kopierer ikke verdiene til et objekt, men referansen til det (akkurat som Java).
  • En konstruktør har samme navn som sin klasse og er syntaktisk lik en metode.
  • En konstruktør returnerer ingen verdi (ikke engang ugyldig).
  • Akkurat som metoder, kan også konstruktører bli overbelastet.
  • Hvis en konstruktør ikke er spesifisert i en klasse, brukes en standardkonstruktør som består av å tilordne alle variabler verdien 0, nulleller falseetter behov.
  • Når et objekt ikke refereres til av noen variabel, kjører søppelsamleren klassens destruktor og frigjør det brukte minnet.
  • Destruktoren til en klasse kalles ikke når et objekt går utenfor rekkevidde.
  • Alle destruktorer vil bli tilkalt før et program avsluttes.
  • Nøkkelordet thiser en referanse til det samme objektet som det brukes i.
  • Nøkkelordet baseer en referanse til den overordnede klassen til objektet det brukes i (som standard, Objekt).
  • Nøkkelordet staticgjør at et medlem tilhører en klasse i stedet for til objekter i den klassen. Et slikt medlem kan nås før et objekt i klassen er opprettet og uten referanser til et objekt.
  • En metode statichar ikke en referanse this.
  • En metode statickan bare kalle andre metoder static.
  • En metode staticskal kun ha direkte tilgang til data static.
  • En konstruktør staticbrukes til å initialisere attributter som gjelder for en klasse i stedet for en forekomst.
  • C# tillater operatøroverbelastning ( +, -, *, etc.) med nøkkelordet operator.
  • Sammenligning av objekter ( ==, !=, <, >, <=, >=) sjekker om de refererer til samme objekt.

Erklær en klasse:

klasse Klasse { }

Start en klasse (også kalt opprette et objekt av klassen eller instansiere en klasse ):

Klasse c = ny Klasse ();

Konstruktør (som om det var en metode, men med navnet på klassen):

klasse Klasse { Klasse () { // ... } }

Destruktor (som om det var en metode, innledet med symbolet ' ~'):

klasse Klasse { ~ Klasse () { // ... } }

this:

klasse Klasse { int i = 1 ; Klasse () { dette . boot (); // Vil kalle objektets 'Start'-metode } void Start () { // ... } }

static:

klasse Klasse { static int i = 1 ; } Klasse . jeg ; // Returnerer verdien '1'. Det er ikke nødvendig å lage et objekt, siden det er "statisk" og tilhører klassen.

operator:

klasse Klasse { static int operator +( int x , int y ) { // Overstyr '+' operator // ... } static int operator -( int x , int y ) { // Overstyr '-' operator / / ... } statisk int - operator int ( byte x ) { // Overbelastningskonvertering fra type 'byte' til 'int' // ... } }

Objektsammenligning:

klasse Klasse { } Klasse c1 = ny Klasse (); Klasse c2 = ny Klasse (); bool b = c1 == c2 ; // Vil returnere 'false', siden de er to forskjellige objekter

Tegnstrenger

  • Datatypen for tegnstrenger er string.
  • Nøkkelordet stringer faktisk et alias for System.String.NET-plattformklassen.
  • I C# er strenger objekter og ikke en rekke tegn; Likevel kan et vilkårlig tegn hentes fra en streng ved dens indeks (men ikke modifisert).
  • Strenger er uforanderlige, når de først er opprettet, kan de ikke endres, de kan bare kopieres helt eller delvis.
  • Operatoren ==bestemmer om to referanser refererer til samme objekt, men å bruke operatoren med to typevariabler stringtester likheten i innholdet i strengene og ikke referansen deres. Men med resten av relasjonsoperatorene, som <og >=, sammenlignes referansene.
  • To strenger kan settes sammen (sammenføyes) ved å bruke operatøren +.
  • Strenger kan brukes i utsagn switch.

Deklarer en tegnstreng (som om den var en variabel av en datatype som into double):

string text = "Tegnstreng" ; strengtekst = nytt system . _ String ( "Tegnstreng" ); // Tilsvarer ovenfor

Lengde på en streng:

string text = "Tegnstreng" ; int i = tekst . Lengde ; // Returnerer '20'

Sammenlign to strenger:

bool b = "tekst" == "tekst" ; // Returnerer 'true', siden begge strengene inneholder "tekst"

Sammenknytt strenger:

string text = "String of" + " characters" ; // Merk mellomrommet før "tegn", hvis det ikke var satt, ville det vises ved siden av: "decharacters"

Klassen System.String, og en forekomst av den, stringhar noen metoder for å jobbe med strenger, for eksempel:

static string Copy(string str): returnerer en kopi av str.

string text1 = "abc" ; string text2 = "xyz" ; string text2 = System . String . Kopier ( tekst1 ); // 'text2' inneholder nå "abc"

int CompareTo(string str): returnerer mindre enn null hvis den kallende strengen er mindre enn str, større enn null hvis den kallende strengen er større enn str, og null hvis strengene er like.

string text = "abc" ; int i = tekst . CompareTo ( "abc" ); // Returnerer '0'

int IndexOf(string str): returnerer indeksen for det første treffet til den angitte delstrengen i str, eller -1 ved feil.

string text = "abcdefabcdef" ; int i = tekst . IndexOf ( "e" ); // Returnerer '4' int j = tekst . IndexOf ( "def" ); // Returnerer '3', som er der 'd'-tegnet er funnet, etterfulgt av 'e' og 'f'

int LastIndexOf(string str): returnerer indeksen for det siste samsvaret med den angitte delstrengen i str, eller -1 ved feil.

string text = "abcdefabcdef" ; int i = tekst . LastIndexOf ( "e" ); // Returnerer '10' int j = tekst . LastIndexOf ( "def" ); // Returnerer '9', som er der det siste tegnet 'd' er funnet, etterfulgt av 'e' og 'f'

string ToLower: returnerer en kopi av strengen med små bokstaver.

string text = "ABC" ; strengtekst = tekst . _ ToLower (); // Vil returnere "abc"

string ToUpper: returnerer en kopi av strengen med store bokstaver.

string text = "abc" ; strengtekst = tekst . _ Øvre (); // vil returnere "ABC"

string Substring: returnerer en delstreng, som indikerer startposisjon og ønsket lengde.

string text = "Tegnstreng" ; strengtekst = tekst . _ delstreng ( 10 , 8 ); // Vil returnere "karakter"

Mer informasjon på: String (Klasse) (System ) .

LINQ (språkintegrert spørring)

Language-Integrated Query (LINQ) er navnet på et sett med teknologier som består av direkte integrasjon av spørringsfunksjoner i C#-språket (også i Visual Basic og potensielt i et hvilket som helst annet .NET-språk). Med LINQ er en spørring nå en førsteklasses språkkonstruksjon, akkurat som klasser, metoder, hendelser og så videre.

For en programmerer som skriver spørringer, er den mest synlige språkbygde delen av LINQ spørringsuttrykket. Spørringsuttrykk er skrevet i den deklarative spørringssyntaksen som ble introdusert i C# 3.0. Ved å bruke spørringssyntaks kan du utføre selv komplekse filtrerings-, sorterings- og grupperingsoperasjoner på datakilder med minimalt med kode. De samme grunnleggende spørringsuttrykksmønstrene brukes til å spørre etter og transformere data fra SQL-databaser, ADO.NET-datasett, XML-dokumenter og -strømmer og .NET-samlinger.

Følgende eksempel viser hele spørringsoperasjonen. Den fullstendige operasjonen inkluderer å lage en datakilde, definere spørringsuttrykket og utføre spørringen i en forhver uttalelse.

klasse LINQQueryExpressions { static void Main () { // Spesifiser datakilden. int [] score = new int [] { 97 , 92 , 81 , 60 }; // Definer spørringsuttrykket. IEnumerable < int > scoreQuery = fra poengsum i poengsum der poengsum > 80 velg poengsum ; // Utfør spørringen. foreach ( int i i scoreQuery ) { Console . Skriv ( i + " " ); } } } // Utdata: 97 92 81

https://msdn.microsoft.com/es-es/library/bb397676(v=vs.120).aspx

Eksempler

Grunnleggende " Hello world "-eksempel:

bruker System ; public class Eksempel { public static void Main ( string [] args ) { Console . WriteLine ( "Hei verden" ); } }

Addisjon og sammenkobling:

bruker System ; public class Eksempel { public static void Main ( string [] args ) { int x = 10 ; int y = 20 ; Konsoll . WriteLine ( "Resultatet er: " + ( x + y )); // Vil skrive ut på skjermen: "Resultatet er: 30" } }

Bruk av klasser, metoder, egenskaper og overbelastning:

bruker System ; offentlig klasse Bil { private int numDoors ; public int NumPuertas { get { return this . antallDører ; } sett { dette . numDoors = verdi ; // 'verdi' er en variabel som automatisk tildeles når du tilordner en verdi til egenskapen, // for å arbeide med den verdien. } } offentlig bil ( int numDoors ) { dette . numDoors = numDoors ; } // Overbelastning: hvis klassen instansieres uten å indikere noen parameter, initialiseres 'numDoors' med verdien '2' public Car () : denne ( 2 ) { } } public class Eksempel { public static void Main ( string [] args ) { Car car = new Car (); // Den andre bilkonstruktøren brukes . AntallPuertas = 4 ; Konsoll . WriteLine ( "Antall dører er: " + bil . NumPuertas ); // Vil skrive ut på skjermen: "Antall dører er: 4" } }

Eksempel på parallelle vektorer eller matriser:

Oppgave 1:

Utvikle et program som lar deg laste inn 5 navn på personer og deres respektive aldre. Etter å ha utført tastaturinnlastingen av alle dataene, skriv ut navnene på personene som er myndige (større enn eller lik 18 år).

Program:

bruker System ; bruker System.Collections.Generic ; bruker System.Linq ; bruker System.Text ; navneområde VectorTest10 { class VectorTest10 { private string [] navn ; privat int [] aldre ; public void Load () { names = new string [ 5 ]; aldre = ny int [ 5 ]; for ( int f = 0 ; f < navn . Lengde ; f ++) { Konsoll . Skriv ( "Skriv inn navn:" ); names [ f ]= Konsoll . ReadLine (); Konsoll . Skriv ( "Skriv inn alder:" ); strenglinje ; _ linje = Konsoll . ReadLine (); aldre [ f ]= int . Parse ( linje ); } } public void OlderAge () { Console . WriteLine ( "Personer i lovlig alder." ); for ( int f = 0 ; f < navn . Lengde ; f ++) { if ( aldre [ f ] >= 18 ) { Konsoll . WriteLine ( navn [ f ]); } } Konsoll . ReadKey (); } static void Main ( string [] args ) { VectorTest10 pv = new VectorTest10 (); p.v. _ Last (); p.v. _ EldreAlder (); } } } signatur : RSRR

Egendefinerte vanlige kontroller

Det bør bemerkes at de vanlige kontrollene som tilbys av .NET-plattformen kan tilpasses og/eller redigeres for å møte de ulike behovene til utviklere. Beslutningen om å lage en egendefinert kontroll kommer når du vil lage en komponent der du har full kontroll over dens funksjonelle og visuelle utseende; med mulighet for å ikke laste inn unødvendige funksjoner for utvikling.

Vanlige tilfeller der disse funksjonene ofte brukes er:

  • Enkle kontroller med begrenset funksjonalitet (som en knapp med bevegelse lagt til).
  • Kontroller der det er unødvendige funksjoner for utvikling (en knapp uten margene).
  • Kontrollerer hvor samme funksjonalitet er nødvendig i en annen layout (knapper i form av en linje for å representere en kant).

Kompilatorer og IDE-er

For øyeblikket er det følgende kompilatorer eller IDE -er for C#-språket:

Mål for språkdesign

ECMA-334-standarden viser følgende designmål for C#:

  • Enkelt, moderne, objektorientert programmeringsspråk for generell bruk.
  • Inkludering av programvaretekniske prinsipper som streng datatypekontroll, kontroll av vektorgrenser, gjenkjenning av forsøk på å bruke uinitialiserte variabler og automatisk søppelinnsamling.
  • Evne til å utvikle programvarekomponenter som kan brukes i distribuerte miljøer.
  • Portabilitet av kildekoden.
  • Enkel programmerermigrering til det nye språket, spesielt for programmerere som er kjent med C, C++ og Java.
  • Støtte til internasjonalisering .
  • Egnet for å skrive applikasjoner i alle størrelser: fra de største og mest sofistikerte som operativsystemer til de minste funksjonene.
  • Økonomiske bruksområder når det gjelder minne og prosessering.

Referanser

  1. "Hvorfor ble C++ kalt det i stedet for C+?" . Engelsk . 10. februar 2015 . Hentet 12. juni 2019 . 
  2. Visual C# Developer Center, ofte stilte spørsmål om Visual C# .NET 2003

Eksterne lenker

På spansk

På engelsk