Press "Enter" to skip to content

GOTO 2016 • Why You Should Take Another Look at C# • Mads Torgersen


ok allora benvenuto, spero che tu sia
seduto comodamente
il mio nome è Matt Olsen noto in America
come Matt’s torgussen e io lavoro su C
nitido e per Microsoft sono sempre io
invecchiando porto sempre t-shirt con
il nome del linguaggio di programmazione che sono
lavorando in caso dimentichi e sono qui
per parlare di c-sharp e perché potrebbe essere
forse vale la pena pensarci anche se tu
non ho finora, quindi prendiamo il let’s
ottenere i dettagli imbarazzanti con
quante persone già familiarità con
hahahaha c-sharp che è molto di quanti
non sono Wow
così farò completamente fallire
introducendo qualcuno a c-sharp a
questo discorso è bello sapere che possiamo forse
Brezza su alcuni dettagli che avevo programmato
e prendi una mano in modo uniforme
anche così dicono che il motivo per cui
loro fanno quegli annunci SUV è
non fare in modo che le persone comprino ciò che deve fare
le persone hanno già comprato e si sentono bene
sul fatto che lo facessero forse io
posso forse ottenerlo così sono
è stato chiesto di ricordartelo
valutare il discorso è buono per me
perché allora se faccio qualcosa in a
un modo insoddisfacente per farlo meglio
la prossima volta forse ed è buono per il
andare gente perché poi possono decidere
se invitarmi ancora qualche altro
il tempo quindi lo voglio quindi questo è nel sentire
buon stackoverflow del Dipartimento ha a
sondaggio ogni anno del loro
gli sviluppatori e loro chiedono alcuni
varie domande e naturalmente lo è
distorto e non scientifico in tutti i tipi
di modi prima di tutto bisogna essere in
Stack Overflow per partecipare ma l’ho fatto
Mi sono piaciuti i numeri, quindi userò
loro comunque, quindi se guardiamo qui
c-sharp è molto usato
lingua è il numero quattro qui del
tre sopra
uno di questi non è una programmazione
linguaggio così um e non sto parlando
JavaScript Sto parlando di sequel e
quindi così c-sharp è sicuramente una lingua
è già in uso , è così
uno dei principali mainstream
lingue se vuoi e anche loro
chiesto alla gente se vorrebbero
continua a usare il linguaggio che sono
utilizzando e valutano si imposta per valutare il
le tecnologie più amate ed è
interessante vedere il T sharp acceso
anche questa lista ha ragione per le persone
in realtà amo c-sharp in una certa misura
ci sono alcune lingue che amano
di più ma se noti che molti di loro lo sono
le lingue con un piccolo pubblico sono una specie di
un pubblico molto dedicato forse
più parte di un culto o qualcosa e e
ma è un po ‘ce ne sono solo alcuni qui
il fondo che sono in realtà in entrambi
liste che sono entrambe molto usate e
molto amato quindi è bello essere uno di
le tre tecnologie in tale elenco a
quale un linguaggio di programmazione e yay
per Python anche per essere lì a destra
quindi è così che dobbiamo fare in Python
qualcosa di giusto e noi siamo costantemente
prova a pensare a cosa siamo
probabilmente facendo bene che siamo noi
sono ancora una programmazione abbastanza gradita
linguaggio dopo tutti questi anni così
sembra non essere il fatto che tutti
usa c-sharp solo perché devono
perché la gente ha fatto dieci anni fa
compagnia e hanno tutto questo patrimonio
il codice sembra essere una specie di
energia intorno e vogliamo provare a mantenere
che sta andando e abbiamo qualche idea su
perché questo potrebbe essere ed è una specie di
cosa sta guidando la nostra lingua
evoluzione se vuoi così torneremo
a quello un po ‘ più tardi, ma penso
una cosa fondamentale da sottolineare qui è
che siamo molto desiderosi di evolvere c-sharp
come se guardassi la lingua
scala di evoluzione da un po ‘a molto
siamo un po ‘ laggiù come un mainstream
linea come le lingue mainstream ci va
tipo di tendono ad essere piuttosto aggressivo
su come mantenere la lingua fresca e
mantenerlo moderno e chiedere il
linguaggio di programmazione stato dell’arte
si evolve così facciamo noi e qualche volta siamo
noi siamo i motori e qualche volta siamo
i follower ma proviamo a mantenere il
lingua una buona scelta per
i nostri programmatori nei giorni moderni non solo
qualcosa che devi fare perché
qualcuno ha fatto quella scelta in una precedente
decennio quindi è una specie di filosofia
intorno ad esso voglio anche sottolineare F
forte perché è la nostra sorellina
linguaggio ed è molto popolare
perché è anche molto piccolo e
è un discorso della porta accanto
allo stesso tempo così sono
scusa se quelli sono in programma al
stesso tempo ma um F sharp è molto
linguaggio molto più funzionale e noi
abbiamo un sacco di benefici
dalla collaborazione con F sharp
e il tipo di ispirazione che esso
ci dà nel design del linguaggio C sharp
così così ho voluto chiamare così che fuori
quanti di voi usano C sharp e
qualcosa di diverso da windows okay grazie
ti è sembrato nessuno per un secondo
là ora è più come 2% buono che è
molto quindi la maggior parte delle persone utilizzano C tagliente su
Windows e questo è carino
molto usato per essere dove si poteva usare C
forte e stiamo cambiando il nostro modo
sintonizzati su questa parte del motivo I
voleva incorniciare il discorso in questo modo
è che stiamo davvero spingendo è così
è sempre più così
puoi usare C Sharbel quindi siamo davvero
spingendo per rendere questa un’opzione giusta
abbiamo un po ‘in questa strana situazione
dove C sharp è stato un grande main
linguaggio di programmazione su Windows ma a
allo stesso tempo siamo come completi
nuovi arrivati ad alcune altre piattaforme a
almeno per lo più così e così è
situazione interessante proprio ora
in realtà sta diventando un’opzione su tutti
le piattaforme siamo allo stesso tempo
molto trincerato e ed anche molto
molto nuovo e una specie di principiante
linguaggio in alcune di queste piattaforme e
siamo desiderosi di aiutare questa adozione
quelle altre piattaforme un’altra cosa
quello è cambiato che sta cambiando come
e dove puoi usare C sharp è il
fatto che abbiamo evoluto la nostra lingua
tecnologia quindi il compilatore e l’ID
tecnologie che sono alla base del
implementazione della lingua abbastanza a
po
con quello che chiamiamo fruscio di un progetto e
questo sta abilitando alcuni a mio avviso
scenari unici su come è possibile utilizzare
e come si può come si può programmare in
c-sharp Ti mostrerò un po ‘
di quello perché penso sia un it’s a
nerd e fico e forse puoi farlo
utile anche a te uno dei
le conseguenze di questo è quello
quel lavoro sono una specie di nucleo linguistico
e strappandolo dal tipo di
Windows e Visual Studio specifici
significa che è diventato è diventato molto
facile come vanno queste cose
attuare c-sharp e altri ide così tu
può essenzialmente usare c-sharp nel tuo
ID preferito e parleremo un po ‘
anche a questo proposito
sei un editor preferito e, naturalmente
uno dei grandi cambiamenti è che ci siamo trasferiti
da essere completamente proprietario
tecnologia per essere completamente
open-source in modo che tutti possano contribuire
a c-sharp e molte persone fanno e
con cui stiamo parlando
la comunità è molto diversa
ora è più di un progetto di collaborazione
al contrario di Microsoft dice e e
è molto eccitante , significa questo
piuttosto che uscire ogni tre anni
o qualsiasi altra cosa e dicendo che è questo
quello su cui abbiamo lavorato spero vi piaccia noi
sono ora in un dialogo molto aperto ogni
giorno con la comunità sul nostro
direzione riceviamo sempre feedback
come probabilmente verranno decine di voi
io dopo e dico perché dovremmo essere
fare qualcosa di diverso o di proporre
cose e ciò accade online e via
github ed e anche altrove così noi
abbiamo un molto meglio che abbiamo molto meglio
la qualità del nostro lavoro di progettazione come risultato
di esso Credo ok in modo che un paio di
le cose buone iniziano da Let’s
inizia con alcuni di questi altri posti
che vedi bar char così come molte persone
qui ho usato Sam erina così pochi lì
quindi hai tutto ciò che devi avere
usato Sam reindirizzare a non windows su non
Le piattaforme Windows hanno ragione su questo
probabilmente questa è probabilmente la ragione
perché lo fai Sam erina quante persone
sono consapevoli di cosa sia xamarin
okay, circa mezza pioggia di samurai è estate
significa che eravamo una compagnia separata noi
li ha acquistati sei mesi fa è un
tecnologia per usare C sharp per target
per creare app native per Android e iOS
Giusto quindi è il segnale g2 che è molto
molto basato sul lasciarti usare il
stessa lingua e lo stesso codice sorgente
per la maggior parte scrivere per scrivere app
per più piattaforme mobili diverse
giusto così funziona su iOS su cui funziona
Android si rivolge in realtà Mac pure
e dal modo in cui Windows 2 se lo desideri
e creare sai che crea alta qualità
l’interfaccia utente nativa è in esso è un numero di
grandi app che utilizzano questa tecnologia
perché salva lo sforzo di separare
implementazioni su quelle piattaforme
ti consente anche di usare la lingua che tu
può usare sul backend e quale sì
puoi farlo con Java ma non è abbastanza
c’è ancora con Swift o Objective C
e quindi è una specie della sua economia di scala
ed è anche solo una buona lingua
per l’ implementazione di app su cui è basata
sul progetto mono quante persone conoscono
riguardo al progetto mono va bene circa la metà
quindi quale è open source
implementazione fatta da persone al di fuori di
Microsoft molti anni fa e mantenuto
sin da allora per indirizzare c-sharp ad altri
piattaforme e finestre mentre noi a
Microsoft erano sorta di visione a tunnel su
Windows per molti anni queste persone
visto il potenziale multipiattaforma di
c-sharp molto prima di noi e an
attuare questa grande piattaforma trasversale a
implementazione multipiattaforma quindi a
la pioggia di samurai è basata su questo ed e a
Molte delle applicazioni che vedete nella la
Gli store iOS o Android sono effettivamente basati
su c-sharp o a causa della pioggia di Sam o
a causa dell’unità che è probabilmente il
motore di gioco leader del settore quindi se
sei lassù nelle ultime file a giocare
un gioco invece di possibilità di ascolto
è scritto nell’unità giusta così sei
anche le tue mani sono impegnate
c-sharp in questo momento, quindi ancora una volta questo è basato
su mono e questi 2d questo gioco 2D 3D
il motore è
è uno con cui ti limiti essenzialmente
c-sharp quindi molti di quei giochi
ci sono anche scritte in do diesis
noi abbiamo effettivamente questo
portata multipiattaforma in molti dei
tecnologie client che molte persone sono
non ne sono consapevole, quindi ho voluto chiamarlo
out anche Microsoft ci stiamo lavorando
quello che abbiamo chiamato net core che è un nuovo
implementazione se lo farai del tutto
impilare in rete il runtime e le librerie
è destinato ad essere leggero e
per il tipo di utilizzo lato server server per
anche i carichi di lavoro su cloud e server sono
lavori multipiattaforma e Linux e Mac
e Windows e e stiamo stiamo mettendo
il framework asp.net in cima quale è
framework web ampiamente utilizzato che tu
ora puoi ora eseguire non Windows
le macchine possono essere open source, quindi questo
tipo di aiuto con perché stiamo costruendo un
separare un pozzo questo aiuta con l’ordinamento
di più le cose più leggere
che vuoi fare quando sei nel
lato server prima di tutto non c’è l’interfaccia utente
quadro ma è anche in grado di farlo
implementazione standalone, ad esempio tu
può spedire il runtime insieme al tuo
codice in modo da non avere dipendenze
e varie cose sono state installate sui
la scatola che capita di correre nel
nuvola da qualche parte quindi ha tipo
una migliore architettura lo rende molto di più
adatto per micro servizi e
roba del genere quindi è un po ‘come provare
per modernizzare la nostra piattaforma per il
anche per il lato server
quante persone si sono dilettate con il
Nucleo netto finora così parecchi ancora Wow
dato che gli strumenti non sono nemmeno RTM
eppure sono abbastanza impressionato e ti piace
va bene, mi fa piacere sentirlo perché molto
di persone non ancora, ma penso che siamo gentili
di solo bisogno di finirlo correttamente così
questo tipo di proliferazione di tutti questi
reti diverse che funzionano su diversi
piattaforme o insiemi di piattaforme crea a
un po ‘di confusione, soprattutto se
eri se sei come una biblioteca
fornitore che vuoi provare a scrivere
qualcosa che funziona in modo diverso
piattaforme così anche noi
stiamo anche facendo ciò che abbiamo chiamato net
standard che è un come stiamo specificando
un insieme di API che dovrebbero essere
su tutte le piattaforme net conformi e
se il target che è possibile ordinare e di
basta dire lo standard dotnet di destinazione nel tuo
strumento allora la cosa che scrivi sarà
corri ovunque e così puoi farlo tu
tipo di artiglio indietro la capacità di
scrivere codice che funziona ovunque nel
ecosistema e svilupperà lo standard
nel tempo compreso te
Hynek o librerie essenziali e loro
e puoi quindi scegliere quale target
qualunque standard tu voglia, ecco fatto
praticamente il punto in cui c-sharp
corre e spero che dovrebbe convincere
se c’era qualcuno nella stanza chi
aveva bisogno di essere convinto che le persone che
ce ne sono alcuni che ce ne sono alcuni
più grande spazio indirizzabile per C sharp
poi c’è una sorta di tradizionalmente stato
ed è un po ‘eccitante per noi
essere in grado di mirare così voglio
a Voglio andare al lato più geekery
e parla di più del progetto
fruscio così ho detto che abbiamo modernizzato o il
c-sharp ingegnere lingua, se si vuole che
era solito che ci fosse un c-sharp
compilatore è stato scritto in C ++ e e
poi c’era lo studio visivo e alcuni
integrazione linguistica quindi c-sharp
ed entrambi i tipi di inteso c-sharp in
a modo loro c’è un po ‘di
condivisione del codice e nessun altro potrebbe gentile
di entrare nell’affare se qualcuno volesse
per capire qualcosa su c-sharp
giusto uno strumento o il proprio supporto IDE o
quello che erano un po ‘persi avevano
iniziare da zero perché era tutto
scatola nera e e quando noi e quello eravamo
tipo di insoddisfacente anche per noi così
quando abbiamo deciso che c’era tempo per
riscrivi il compilatore non solo noi
fallo in c-sharp ma ne abbiamo anche preso un po ‘
forte di stand architettonici se tu
sarà su come dovrebbe essere fatto così
essenzialmente non penso che ci siamo articolati
proprio così quando abbiamo iniziato, ma questo
è un po ‘come si è scoperto che loro
dovrebbe davvero solo bisogno di essere un posto
nel mondo in cui la semantica c-sharp
sono implementati nel modo giusto che dovremmo costruire
lo stesso
che tutti possono usare per tutto
vogliono fare con la lingua
indipendentemente dalla piattaforma indipendentemente da
che cosa è che stanno facendo a prescindere
se si tratta di un processo batch o se
come una compilation o se è un
situazione interattiva come un IDE pieno
pieno di codice errato e tutto
quella roba dovrebbe dovrebbe funzionare
tutte queste cose quindi è un amore carino
per andare e ci sono voluti ci è voluto un bel
mentre molte persone
ha funzionato , ma ora abbiamo il
Rosslyn API che è ciò che realmente fa
soddisfare questo obiettivo e la maggior parte delle cose
là fuori che capisce c-sharp
o spostando su a due hanno spostato
oltre a utilizzare Rosling non tutti li ho
non conosco il precedente oratore nel
stanza ma JetBrains è ed è un
eccezione a questo per ulteriori prese
motivi tecnici per conto proprio ma così
l’idea è che questo è un codice
base che hai usato per implementare ID e
editori e e se si dispone di analisi
strumenti di vario genere Linters Lindner
che richiama problemi con il tuo codice se
vuoi manipolare il codice come hai
fissatori automatici o refactoring o
qualunque cosa produca un nuovo codice da tutti
codice puoi usarlo se in realtà
generare fonte puoi usarlo se tu se
stai facendo cose più interattive
come scripting o rep hole o quant’altro
che abbiamo un sous chef di Breville nel
nello studio Mitchell, per esempio, è così
costruito sopra Rosslyn oh e ancora
compila anche il codice e
i prodotti accadono così questo è questo
una sorta di campionamento dei tipi di
cose che puoi fare e quella gente
stanno facendo di picche con Rosslyn, giusto
ora così si è davvero creato questo questo
esplosione è l’esplosione cambriana di
strumenti basati sulla lingua perché le persone possono
ora scendere da terra molto più velocemente
tipo di democratizzare lavorando con il
lingua hai già qualcosa tu
può chiedere informazioni sulla sintassi e sulla semantica
hai solo bisogno di aggiungere i bit specifici
a quello che vuoi fare e uno
particolare progetto comunitario che rende
un uso davvero eccezionale di questo è Omni Sharp
quante persone hanno sentito parlare del nostro uso
Downey è acuto, quindi è troppo poco
più di voi dovreste sapere di Omni sicuramente
è davvero un progetto per fare c-sharp
disponibile sul tuo editor preferito okay
e il modo in cui lo fanno è abbastanza intelligente
perché do diesis ora gira ovunque
può prendere possono prendere il rosslyn
motore c-sharp e possono eseguirlo in a
processo separato su qualsiasi macchina tu
stai offrendo sviluppo su be
è un mac o qualsiasi altra cosa che hanno eseguito come
un processo separato e poi solo loro
bisogno di fare una sottile integrazione nel
qualunque strato di integrazione quello
un editor particolare ha discusso di questo
filo usando alcuni dialoghi di formato filo al
processo su tutto ciò che riguarda il
lingua ogni volta che si preme un tasto
come il tuo primo punto e vuoi ottenere
completamento chiede il processo accanto
come hey loro premono punto che cosa dovrei
mostra nella lista di completamento e lo sa
tutta la semantica quindi dirà loro oh
questi cinque metodi sono disponibili show
quelli e ed è gentile di questo
separazione delle preoccupazioni in cui tutto il
la comprensione della lingua è racchiusa in
un processo separato e può essere creato
su quel formato di filo standardizzato e
così che rende possibile andare e
implementare vedere molto bene semanticamente
consapevole delle modalità c-sharp e in molti
editori che alcuni di voi potrebbero avere
amalo o odio o qualunque cosa a cui a
prova qui dovrei notare questo
Codice di Visual Studio di Microsoft per
istanza usa Omni sharp per il suo c-sharp
modalità che è un’estensione che hai appena
caricare come tutto il resto non lo è
non è incorporato nell’editor c-sharp
è solo un’estensione come le altre
le lingue, quindi è davvero bello
la tecnologia penso che anche io voglio farlo
tempo per un po ‘di codice penso e io no
sapere se sei prurito per il codice pure
o ti fa venire voglia di dormire
probabilmente 50/50 dovrei andare a casa dovrei
uscire e vedere se ho il mio progetto
ancora correndo qui, quindi facciamolo probabilmente
l’esempio più bizzarro e noioso qui
avere alcuni problemi relativi alla risoluzione qui
dovrebbe essere buono puoi vedere il codice su
la fila dietro si, si può effettivamente leggere
è bello perché è un grande schermo
lì buono quindi quello che voglio fare è così
una delle cose che abbiamo fatto per aiutare
le persone iniziano a pensare
sullo strumento basato sulla lingua e provare a
democratizzare è che abbiamo creato questo
quadro che chiamiamo l’analizzatore
quadro in cui è davvero facile
costruisci qualcosa che analizzi le persone
codice sorgente e può dare diagnostica in
e anche per costruire qualcosa che quando
ottieni quei Diagnostici che offrirà
su correzioni al codice e quindi se pensi
sulla tua organizzazione avendo speciale
codice Stili che si vogliono applicare o
hai dei refactoring che vuoi
costruisci perché spesso fai questo tipo di
manipolazione del codice te stesso e
tutto ciò che vuoi condividere con il
mondo
sei tu che avevi correzioni che tu
spesso ti trovi a farlo tu
potrebbe anche automatizzare questo è questo è un
strumento per te e quello che sono questo è questo
è un tipo di progetto che puoi semplicemente
installa e visual studio e inizia
usando quando apri il progetto arriva
con un gruppo di piastre già
costruito per te, quindi cosa succede
in particolare quando si accede alla modalità di debug
su un progetto come questo è che ci vuole
quell’analizzatore che stavi scrivendo e
il codice risolve e qualunque cosa sia
li installa che possono essere eseguiti in batch
codice o qualunque cosa tu possa spedirli come
e sarai impacchettato ma cosa farà
è in realtà li installa come un visual
estensione di studio in una versione annidata di
Visual Studio che viene quindi eseguito come parte
della modalità di debug qui così ora ho
Visual Studio con Visual Studio
il codice risolve quello che sto scrivendo in realtà
operativo nella versione annidata di
Visual Studio quindi apriamo del codice
la versione annidata di Visual Studio qui
e quindi dovrei dire che non l’ho fatto
in realtà completamente scritti quelli
analizzatori, ma lo faremo insieme così
non fa ancora niente ma ecco
alcuni esempi di codice che vogliamo operare
sulla cosa che voglio attuare
è puramente sintattico solo per
semplicità ma tu potrei avere
implementato anche regole molto semantiche
il motore del fruscio fornisce
informazioni complete per me da usare ma
quello che voglio dire qui è che è cattivo
stile per avere istruzioni all’interno di se
dichiarazioni o altre clausole che non lo fanno
avere ricci di intorno a loro che vogliamo
implementare quel vecchio stile rigido
di essi devono essere sempre ricci perché
quindi non si ottengono così tanti bug
che tu modifichi il codice in seguito, così vogliamo
in realtà lamentarsi di questo codice in
quelli
e nel bene per il tempo
Lo implementerò solo per se ma noi
potrebbe anche implementarlo per altro
quindi utilizziamo un piccolo analizzatore di codice
vivi qui, così torniamo al
codice in esecuzione non lo farò
tipo di fermare la cosa annidata
qui ho intenzione di mettere un punto di interruzione
quindi quello che ho fatto è essenzialmente quello che ho fatto
in anticipo sto registrando
che ogni volta che vediamo una dichiarazione se noi
dovrebbe chiamare questo metodo analizzare il nodo
questo è tutto ciò che ho fatto e così ogni volta che
l’analisi della sorgente in Visual Studio colpisce un
se la dichiarazione va qui va bene e andiamo allora
andare e innescare che così se andiamo a
il Visual Studio nidificato qui e lo faccio
una modifica rianalizzerà il codice e
boom che colpirà il punto di interruzione e io sono
ora ricevo tutti i tipi di informazioni
riguardo a dove sono nel codice che posso
iniziare a lavorare così la cosa che ottengo
passato è è un oggetto di contesto
Quindi cerchiamo di guardare cosa c’è dentro di quel
context dot hmm sembra che io sia in grado di farlo
segnala Diagnostics se non mi piace
se la dichiarazione posso anche ottenere il nodo
dell’albero della sintassi che sto guardando
ora quale è l’affermazione if se si spera
quindi iniziamo a capirlo e
se ci spostiamo qui sopra da quando siamo dentro
modalità di debug che è un oggetto reale che
siamo passati dentro vediamo che è davvero
una dichiarazione if se dispiace che il font
è un po ‘ piccolo qui quindi andiamo
ottenerlo come un’istruzione if usando solo
essenzialmente il fruscio è un modello a oggetti
per il codice giusto quindi sto solo guardando a
nodo della sintassi e capita di essere
fuori dalla classe derivata che è un if
sintassi delle istruzioni qui per poter salvare il nostro
se la dichiarazione è quella cosa e ora
questo è l’unico tipo di cosa che siamo
Sarò chiamato con così salterò
controllando che fosse in realtà era
nella tua dichiarazione e cosa dici quando
è un’affermazione errata se è sbagliata
se le affermazioni if ​​dichiarano la cosa
questo è dentro se non lo è
qualcosa con cui Curly lo circonda
ha chiamato un blocco quindi se questo se il tipo di
cosa che non è un blocco
blog di tipo sintassi quindi voglio lamentarmi
Va bene, allora voglio dire per l’utente che si
hai torto e quindi cosa ti penso
voglio fare è prendere ciò che ricordi
segnalare la diagnosi che ho qui ora
Ho intenzione di segnalare un errore diagnostico
e cosa sto per mettere lì sono
metterò un diagnostico okay qualunque cosa
chiamiamolo diagnostica così io
non ce l’ ho ancora, quindi userò
un piccolo refactoring per generare un locale
per questo risulta che posso creare un
diagnostica dicendo diagnosi
directory giusta e ne bastano pochi
cose che ho preparato a
descrittore scusa si chiama
rotolare e quindi ho bisogno di un qualche tipo di
posizione che è dove è dove
metti un ghirigoro nel codice quando questo
quando appare questo problema e poi io
bisogno di dire che tipo di affermazione o
che tipo di cose sto guardando qui
pure così bene
e abbiamo bisogno di scoprire cosa sia
la posizione è quindi facciamo questo refactoring
di nuovo generare un locale questo è tutto il tempo
Sono in modalità di debug dal modo in cui sono
attivamente il debugging ora vediamo
qual è il luogo in cui probabilmente il
la nota che sto guardando l’if
affermazione dove vogliamo davvero il
scarabocchiare facciamolo con la parola chiave if
va bene quindi la dichiarazione if cosa fa
ha una parola chiave if, perché
questo è un synth questo è un concreto
albero di sintassi ha tutti i dettagli su
il codice incluso dove è tutto
e quindi cerchiamo di ottenere la posizione di che ho
vedi c’è un metodo per ottenere la posizione
ottenere la posizione di tale se parola chiave e
e mettilo a posto così ho appena scritto
po ‘di codice vediamo se funziona davvero
rimuoviamo il breakpoint e manteniamo
correndo nel debugger aspettiamo un po ‘
per vedere cosa succede e ora vedi
appaiono gli scarabocchi e le dichiarazioni if
qui a destra così che era tutto quello che dovevo
fare era scrivere quelle tre quattro righe di
codice per identificare il problema
e fino a dire il quadro dove
per dimostrarlo bene e solo per dimostrarlo
tu
che funziona davvero , posso farlo
vai dove è nata quella neve che posso
andare e mettere Curly è lì e il
scarabocchiare andare via e che se tutto va bene
quindi in sostanza abbiamo creato molto facile
usare diventa un po ‘più difficile quando tu
iniziare a fare cose complesse ma
modello relativamente facile da usare del
lingua compresa la sua sintassi completa e
è una semantica vincolante e così via
che le persone possono costruire strumenti condividerli
fuori e tutta l’esperienza di editing per
chiunque utilizzi Sierra indipendentemente da
quale editor usano fino a quando è
basato su Roslyn e indipendentemente da quale
piattaforma su cui stanno lavorando loro possono
può beneficiare di questi e dell’analizzatore
scritto può essere ugualmente eseguito in modalità batch
come potrebbe essere parte della compilation
processo e potrebbe segnalare avvertimenti o
errori proprio come fa il compilatore e
le sue cose native vanno bene così andiamo
vedo per tempo che probabilmente salterò I
potrebbe anche implementare il fixer ma lo sono
non andando a non ho intenzione di farlo in
l’interesse del tempo ma potremmo anche
scrivi un piccolo fixer non è molto
più difficile che risolva effettivamente il codice
e mette quelli ricci lo stesso bene così è
una specie di geek sul
Lato di Roslin e come si spera
aiuta le persone a ottenere un editing migliore
sperimentare uno sviluppo migliore
esperienza con c-sharp abbastanza al di fuori
il linguaggio che ci dà anche ci ha dato un
codice molto migliore e molto meglio
codice base architettato e ovviamente uno
in c-sharp in modo che possiamo dog per loro
linguaggio che ci aiuta ad evolvere il
il linguaggio stesso è molto più facile per noi
ora e per evolvere il linguaggio e
per la comunità di partecipare a questo
evoluzione attraverso i contributi, quindi facciamolo
Prendiamo un veloce promemoria di
l’evoluzione del c-sharp qui è a
molte versioni non ho intenzione di andare
attraverso tutti loro, ma penso che tipo di
che tipo di spettacoli è questo tipo
di aggressività che abbiamo avuto in
l’innovazione che potrei voler indicare
fuori il async ci sono un paio di
cose in cui penso che siamo un po ‘noi
tipo di cose divertenti nella lingua
abbiamo fatto il link alle domande che abbiamo
introdotto in
in c-sharp 3 è davvero una cosa da prendere
una delle cose che cerchiamo di fare è
proviamo a prendere concetti
esiste in lingue interessanti che
non sono molto usati e proviamo a
mainstream e tipo di tirarli dentro
per vedere lo sharbat come una lingua tradizionale
e aiutali a portarli a
mercato più ampio se vuoi e questo è
sicuramente un esempio di questo il link
le query in c-sharp sono un esempio di
comprensione che trovi in
lingue funzionali e così via abbiamo tirato
quelli insieme a Lambdas ora tutti
ogni lingua del mondo ha lambda
era un po ‘meno comune allora
Java li ha presi ora, lo sento, quindi è così
molto carino
ovviamente nel lontano c-sharp 2 che abbiamo fatto
generici solo un po ‘più tardi di Java
di fatto dovevo farne parte
l’introduzione di generici a Java è poi andata
a c-sharp e di cui faceva parte
lo abbiamo tirato fuori in c-sharp che abbiamo fatto
è proprio nel senso che mi dispiace di aver capito
in Java in battuta non dovrei davvero noi
ha fatto bene che i generici sono gentili
di profondamente implementato nel
runtime come Java ha fatto il più cauto
approccio di fare qualcosa di generico
che il compilatore compila ma quando
lo hai profondamente nel runtime che
questo è veramente buono per il tipo di primo di
tutto ciò che ottiene la semantica al 100% ma è così
significa anche che la prestazione
le caratteristiche sono molto diverse
specialmente quando si hanno tipi di valore
la lingua come la testa di C da
versione 1 Ho sentito che Java è probabilmente
ottenendolo qualche volta in futuro quando
hai dei tipi di valore che vuoi davvero
generici per riconoscere quelli e tipo di
specializzarsi per quei tipi di valore così tu
non ottenere un sacco di boxe e assegnazione
usando i generici deve essere così
i generici rendono il tuo codice più veloce non
più lento e generico è stato davvero
il cavallo di battaglia per molte delle lingue
caratteristiche che abbiamo fatto da allora siamo stati in grado
fare domande giuste a causa di generici
perché i generici erano profondamente
implementato in runtime era disponibile
attraverso la riflessione come abbiamo fatto tutti i tipi
di codice strano che cita e traduce
c-sharp 2 sequel e tutto il resto
roba era tutto basato sul fatto che
i tipi fluirebbero e quello sarebbe
disponibile anche in fase di esecuzione
dinamico che integrato
nidi dinamici in un sistema di tipo statico
avendo un tipo per quando le cose erano
dinamica chiamata di nuovo dinamica usa
generici pesantemente sotto il cofano da fare
che li efficiente e per evitare un mucchio
di boxe e roba asincrona molto profondamente
dipende da generici e poi in
c-sharp sei abbiamo Rosling e siamo stati
come va bene ora non è più non è no
più lunga guerra per implementare qualsiasi dato
caratteristica del linguaggio in realtà ne abbiamo di più
agilità e quindi ora è il momento di prendere
tutte quelle piccole caratteristiche che non abbiamo mai
avuto modo di implementare e volevamo
implementare per fare solo lo sviluppo
più facile e più bello, più leggero e più pulito
e così abbiamo fatto una parte di quelli in
c-sharp sei, che è la versione di
c-sharp che è là fuori adesso e nng
negozio sette dove stiamo assumendo alcuni dei
le caratteristiche più profonde di nuovo che noi
pensiamo che prendiamo ancora molto in prestito da
il mondo funzionale e pensiamo che
noi stiamo essenzialmente prendendo il
il prossimo passo in termini di gestione dei dati
non è necessariamente così oggettivo
orientato se vuoi che tu sia
vedendoci iniziare come un oggetto molto
linguaggio orientato e tipo di lean
verso uno stile più funzionale come a
supplemento al orientato agli oggetti se tu
volontà e cercando di integrare quelli come
bene come possiamo è un po ‘di un
ispirazione da Scala se vuoi e
cosa sta facendo sulla JVM che è
prova a rendere funzionale e oggettivo andare
lavorare bene insieme ma sicuramente
con il con le nostre radici nel
oggetto imperativo andare nel mondo per
per la situazione di Alice e quindi penso
la prossima cosa che dovremmo fare lo farò
saltare la demo asincrona e dalla maggior parte di
probabilmente sai di cosa si tratta
e poi parliamo un po ‘
un po ‘di cosa sta arrivando
c-sharp sette così quante persone hanno
Quante persone qui effettivamente usano
c-sharp sei o più recenti, quindi è abbastanza a
molti di voi tanti di voi hanno un sentimento
per quello che c’è già
così per C sharps sette e ora I
scusarsi con i pochi presenti nella stanza
non vedete sharpie se questo succede se questo
anche un po ‘
troppo profondo qui, ma penso che si spera che lo sia
ancora utile vedere che non avevo intenzione di farlo
tipo di mostrare tutte le nuove funzionalità che
ci sono ma penso che alcuni di più
quelli importanti lo stavano guardando
tipo di va ad alcuni dei comuni
situazioni in cui ti trovi in cui il
questo tipo di stile C standard se lo sei
andando al paradigma ottenere un po ‘nel
così iniziamo con l’inizio
con le tuple okay, quindi ho questo è il mio
tutto il programma qui, quindi ne ho un po ‘
numeri in realtà da quando lo sai
sono un po ‘riconoscibili qui ma
Non tutte le persone li può conoscere da noi cuore
in realtà hanno dei binari letterali ora è così
tipo di una caratteristica minuscola ma ma hey um
è buono per quando stai insegnando il tuo
bambini da programmare giusto oh questo è
in realtà questi sono i bit che sono
sotto questi numeri va bene
smettila di sapere che davvero farò
uno in più perché un’altra cosa anche noi
questo è totalmente solo lì, sono solo
facendo questo perché sì , non so perché
Lo sto facendo abbiamo anche cifre
separatori ora così puoi piacere agli altri
anche le lingue in modo da poter mettere sotto le sbarre
ovunque tu voglia, così i numeri diventano
più facile da leggere quale e se vuoi
molti vanno bene, ok
ora lasciamo il 32 lì così che io
voglio fare è voglio implementare a
metodo chiamato tally che riassume
i numeri in un array e anche quello
li riassume e li conteggia anche ok
quindi ti dirò questi numeri ok
Certo , non ho ancora quel messaggio
usiamo un refactoring per generarlo
solo un metodo statico qui ritorna
annullarlo probabilmente dovrebbe restituire qualcosa
altrimenti, ma è così, ecco la domanda
giusto dovrebbe restituire la somma o dovrebbe
restituisce il conteggio entrambi sì proprio bene
così così l’idea è che si può solo ritorno
una cosa in c-sharp oggi ma domani
puoi restituire due cose e tre come
coccolare ma puoi anche restituire quattro così
se sei nella stanza la settimana scorsa, coccole
ti abbiamo battuto di uno in realtà ti abbiamo battuto
dall’infinito perché puoi avere il massimo
strumenti come vuoi ma probabilmente è un
cattiva idea quindi torniamo a intz
okay e quindi questo è un tipo di tupla e
è una specie di deliberatamente bene è a
tipo di tupla quindi dice due volte
dovrebbe essere abbastanza facile da capire
ed ecco un tubulo letterale che lo farà
solo restituire un manichino per ora ottieni
iniziato che poi è composto da alcuni
valori anche con Francis tra parentesi
e commenti e questo non dovrebbe essere troppo
sorprendere una sintassi per questo e così quando io
vai qui posso prendere il risultato del
Tally e posso guardarlo e lo e
ecco, è una grande tupla quindi come posso
usa una tupla lasciamo stampare qualcosa
fuori dal momento che questa è un’app console che è
praticamente quello che possiamo fare interpolare
le corde che amiamo è la somma
probabilmente la prima cosa lì dentro così
vediamo t dot vediamo cos’è una tupla
ha bene ha un oggetto uno e ha
un articolo due ok
è abbastanza ovvio quello che sono così noi
può usarli non i migliori nomi nel
mondo ma funziona Tina
punto due, quindi ecco qualcosa
funziona ma vorrebbe dire che sarebbe
bello se avessero un bel nome così tuple
in c-sharp può effettivamente salire a scelta
avere nomi per i diversi per il
diversi elementi qui così ora ho dato
i nomi e cosa significa questo bene
significa che quando lo riaverlo
mi dice cosa sono una buona cosa
commento operativo se lo farai anche tu
significa però che se vado qui e e
premere start oltre a questi che
questa è un’anteprima della versione finale
dovrebbe probabilmente nascondere i brutti nomi quando
abbiamo dei bei nomi perché puoi vedere
alcuni sono qui e posso usare quel nome
anziché
quindi questi sono il tipo di nomi veri
del tipo sottostante ma del compilatore
sa anche di tenere traccia di questi altri
nomi e mostra quelli invece così ottieni
un’esperienza migliore che va contro quella così
Penso che sia importante che gli strumenti abbiano
avere nomi in loro perché chi può chi
può ricordare se fosse il primo nome
cognome o nome cognome e
tutte quelle cose giuste ne hanno bisogno
bisogno di venire con
e deve essere operativo di cui hai bisogno
per essere in grado di ottenerlo, naturalmente , potresti
preferisci prelevare immediatamente lo strumento
a parte quando lo prendi e lo decostruisci
e puoi farlo anche in c-sharp così
puoi dire che alcuni vengono e contano qui e
ora lo strumento ottiene immediatamente
decostruito in una variabile e
variabile dell’account che viene dichiarata qui
e invece di T punto qui possiamo solo
dì somma e conto va bene per i lames
sì, quindi andiamo ora e implementiamo
questo metodo per davvero così invece di
tornando solo un manichino qui torniamo
un risultato e facciamo il risultato
uguale a quel valore fittizio qui per iniziare
con così quello che vogliamo fare è vogliamo
per ciascuno sopra i numeri chiamiamo
Valorizza perché mi piace di più
Diamo per ciascuno sopra i valori e VAR v
in valori e quindi vogliamo aggiornare il
risultato ogni volta in modo che possiamo dire
in realtà risultato che è troppo lungo che voglio
per chiamarlo semplicemente R va bene così
diciamo solo che R è uguale a una nuova
tupla letterale il nostro cane voglio ottenere il
vecchio valore vorrei che vorrei che il nostro avesse
anche i nomi andiamo e diamo nomi
possiamo puoi dare nomi nei due
anche letterale, quindi lo fai con il
stessa sintassi che usi per named
argomenti così ora il nostro ha come e un C così
ora possiamo dire che è la somma che è
già lì più il nuovo valore e il
conta che era già lì più uno
va bene
così si potrebbe si potrebbe essere giustificati nel
chiedersi non è terribilmente dispendioso
non sta assegnando un nuovo array o un nuovo
tupla ogni volta in questo ciclo e
in questi in queste risorse limitate
dispositivi e e
e ciclo imposta anja personalizzata sul cloud
e così via non è uno spreco da allocare
tutte queste tuple e non è perché
gli strumenti non sono in realtà oggetti
sono lì per la gioia degli strumenti
implementato come un tipo di valore è destruct
in c-sharp quindi non sono assegnati a questo
è davvero sul posto aggiornando alcuni
cose che sono già in pila
giusto così sono i loro tipi di valore
passato per copia non per riferimento alle palle
non hanno identità hanno appena
i valori vanno bene a cui una cosa è la via
Cazzate dovrebbero essere una specie di essere
effimero non dovrebbero avere questo tipo
di vita propria e anche di più
efficiente, quindi è così che sei bravo
In realtà, in realtà, Trubel non lo è
solo i tipi di valore sono anche mutabili
e so che ci sono persone nel
campo funzionale che sta per ribellarsi
su questo perché hanno già um
ma le tuple sono immutabili
puoi mutare una tupla così invece di
In questo modo ho potuto effettivamente scrivere
è probabilmente meno elegante ma potrei
scrivere RS plus equivale al valore e come a
la dichiarazione separata è in c più più no
gioco di parole
beh un po ‘, ma così posso davvero
muta la tupla sul posto perché è così
non pericoloso perché non è condiviso
stato mutevole tra i thread o qualsiasi altra cosa
qui perché è una struttura giusta
nessuno lo condivide tu passi qualcuno
è una società quindi non è in realtà
pericoloso quindi abbiamo appena detto che diamine
mentre questo è uno di questi come il perché
deve sempre essere orientato agli oggetti
giusto giusto è che tutto ha
essere incapsulato e quindi non c’è
così le tuple non hanno queste no
hanno proprietà hanno solo campi
sono solo strutturati con alcuni mutabili
campi pubblici ci va bene è come
semplice da ottenere in modo da capire cosa
hai pensato che sia giusto per le tuple
perché non sono davvero un
astrazione che non stanno avvolgendo
qualcosa sono solo valori quindi lasciami
solo essere dei valori quindi lascia che potessi fare
questo, ma in realtà non perché io
come l’ altra cosa va meglio così bene il
restano poche cose da dire
tuple è che dal momento che è un tipo è un
Digita ha l’ uguaglianza di valore, quindi puoi
usalo come chiave in un dizionario per
istanza che significa te
se vuoi un po ‘ se vuoi te
essere la chiave del delft di due cose che entrambi
deve essere giusto quindi puoi semplicemente usare a
tupla come chiave e tutto funziona
giusto il codice hash e tutto funziona
fuori proprio nelle strutture dati
anche ovviamente è un buon modo per ottenere
più risultati di ritorno da un
metodo asincrono perché se il tuo
async e e tu e tu restituisci compiti
di una tupla poi tutto funziona quando
vai qui e attendi la tupla
torna indietro e puoi decostruire
continua e continua così , eccoli
buon trasporto per la situazione intorno
i risultati multipli erano anche peggiori
metodi asincroni e altri metodi perché
non si potevano usare i parametri ma ora
puoi semplicemente usare le tuple okay, certo che io
non arrivare a un’attesa perché quella cosa
non era altro che ignorarlo così bene
questa è tuple per te l’altra cosa
che penso sia piuttosto interessante
è il è che stiamo iniziando ad aggiungere
pattern matching to c-sharp e questo è a
tutto nuovo concetto che siamo di nuovo
portando dal campo funzionale e
lo stiamo facendo gradualmente così io
pensa che vedrai di più su questo fronte
nelle versioni successive di c-sharp ma lo siamo
fare un grande passo penso nell’introdurre
il primo paio di schemi e così come
funziona bene giriamola
questo esempio in uno dove abbiamo
liste ricorsive di numeri così invece di
un array int questo è un array di oggetti
dove abbiamo solo una convenzione che il
le cose dentro sono int o là
sono altri array di sinonimi così nuovi
array di oggetti con alcuni di questi in
Sonesta dentro così forse c’è
anche un nulla in là per buona misura
e ora vogliamo aggiornare il conteggio
il metodo in modo che possa affrontare in modo che
prendiamo gli array di oggetti invece qui
e ora abbiamo un errore qui perché
perché V non è più un int è an
oggetto quindi dobbiamo sapere che è un
terminare prima possiamo aggiungere che qui così abbiamo bisogno
una sorta di logica lì e e cosa noi
avrebbe fatto in passato è che faremmo un
prova di tipo
quindi diremo se se V è int allora possiamo
vai e fallo, ma ovviamente anche solo
anche se controlliamo solo che ci siamo
in realtà non lo so ancora qui
dobbiamo controllare
di nuovo e lanciarlo o qualsiasi altra cosa
lo stiamo facendo invece ora siamo noi siamo a
quindi prima approssimazione a cui puoi pensare
mentre stiamo estendendo l’ Ennis
espressione in modo che tu possa ora dichiarare a
variabile qui quando dici che è in quando
chiedi se è dentro se è poi prendere
quello int e lo metti nel nuovo
variabile I e quindi la variabile I
il valore di V ma ci ha scritto così ora
posso aggiungerlo qui e so che sto bene okay
quindi è una sorta di aggiunto solo un esteso
versione di questa espressione se vuoi
ma quello che sta realmente accadendo è che il
l’espressione è ora estesa a
Consentire modelli che sono un nuovo concetto in
modelli c-sharp invece di solo tipi
e i modelli possono essere molti diversi
le cose non possono essere molto diverse
le cose ora possono essenzialmente essere
costanti o tipi tipo di modelli come
questo potrebbe essere come un costante potrebbe
ad esempio potresti essere in grado di dire
V è sette in realtà anche adesso
permesso perché è una costante
modello e quindi li stiamo prendendo
modelli in cui li stiamo integrando
caratteristiche del linguaggio come questo
espressione l’altro posto dove siamo
integrandolo solo per stare con
l’esempio qui è che stiamo integrando
nell’istruzione switch quindi se dico se
Dico switch se potrei scrivere qui
interruttore Posso ora accendere qualsiasi cosa
usato per essere quell’interruttore potrebbe semplicemente cambiare
su tipi primitivi è una specie di questo
dinosauro di una caratteristica, ma ora posso
accendi tutto ciò che posso passare a
l’oggetto passa a V e ora nel mio interruttore
dichiarazione posso avere casi che non hanno
solo costanti in esse che sono adesso
solo un tipo speciale di pattern ma il
i casi possono avere qualsiasi tipo di schema così io
posso dire case int I tranne che dobbiamo fare
qualche cosa a intellisense qui
completamento prima di spedire questo e io e
Devo ricordare la pausa, ecco perché
Mi sto facendo ondulare là e ora
In sostanza ho usato un modello così io
esteso le clausole del caso in a
passare la dichiarazione per essere in grado di applicare a
modello e dire quando questo modello
si applica questo caso particolare, va bene
e così ora posso farlo adesso
modernizzare l’istruzione switch un po ‘io
può anche dire un array di oggetti caso che è
l’altra cosa che mescolo
chiamiamolo e io posso
in realtà anche mettere le condizioni nei topi
che nel mio caso le clausole qui dicono io
voglio solo l’oggetto a quando è a
più di 0 perché de edad lunghezza
è maggiore di 0 perché altrimenti
non c’è lavoro da fare bene e poi
quando questo è il caso posso fare VAR t
equivale al conteggio dell’array nidificato e
e vai aggiungilo a 2r e R è uguale a R
sai come va r 2 s più punto T
alcune virgola r punto C più il conteggio punti T
giusto e una pausa così di nuovo ortografia
aiuta così così che c’è un
generalizzazione delle funzionalità esistenti con
schemi ed è fin dove siamo arrivati
c-sharp finora con pattern matching
ci sono alcune cose che se torno indietro
alle diapositive ecco alcune cose che noi
vorrebbe fare ci sono più cose che
voglio fare con i modelli in futuro
prima di tutto vogliamo essere più intelligenti
modello quindi dovresti essere in grado di farlo
hanno modelli ricorsivi Abbiamo effettivamente I
non ha mostrato, ma in realtà lo abbiamo anche lasciato
ti permette di specificare in un determinato tipo che esso
può essere decostruito in modo da poter specificare
un tipo di nomina per esempio che può
essere decostruito proprio come a
decostruito per tuple in due separati
variabili e quando le cose sono d
costruibile perché non noi perché no?
mettilo insieme al modello
corrispondenza e ti permettono di avere entrambi
controlla che sia sempre un punto e se lo è
decostruito e farti sapere forse
applicare schemi ricorsivi qui dicendo
se oh è un punto e la prima parte di
quel punto la X è 5 quindi metti il
seconda parte in variabile Y e do
qualcosa con Y giusto per poterti gentile
di ottenere modelli più intelligenti e intelligenti voi
può probabilmente anche scrivere codice illeggibile
con questo ma penso che in generale sia
sarà utile essere in grado di
scavare un po ‘più in profondità in un modello il
l’altra cosa è forse dovremmo dovremmo
trovare nuovi posti per avere schemi
l’affermazione dell’interruttore è gentile
tipo di
Giusto anni ’60 e quindi forse c’è un
versione dell’espressione dell’interruttore
affermazione forse è un’espressione di corrispondenza
come se fosse chiamato in lingue funzionali
questo è ciò che ha
sintassi più niftier questa espressione ha basato il
i casi sono espressioni e il tuo codice ottiene
un po ‘ più terso come quello, ma quello è
il tipo di cosa che possiamo ora noi
avere la nozione di modelli in là noi
può sia aggiungere nuovi pattern che aggiungerne di nuovi
luoghi in cui si verificano in modo che sia uno
cosa su cui siamo concentrati per il
prossima versione di C sharp che siamo
già lavorando perché c-sharp 7 è
praticamente fatto non abbiamo spostato
ancora e non chiedermi quando l’altro
la cosa a cui stiamo pensando è quella
delle cose che ho parlato tipo di
muovendosi con lo stato dell’arte e uno
delle cose che stanno diventando mainstream
nelle tue adorabili lingue è questo
è la capacità di distinguere nel
sistema di tipo tra quando le cose sono
dovrebbe essere Nala Bolena non lo sono
giusto questa variabile dovrebbe
a volte è nullo è parte di esso
dominio
questo non è così perché sto ricevendo tutto
eccezioni di riferimento tutto il tempo il
ragazzo precedente qui
hai parlato della stessa cosa per
per coccole e switch test che
e così via, quindi siamo stati come possibile
facciamo qualcosa per c-sharp lungo questi
linee anche se ne abbiamo avute sette
le versioni ora non sono state abilità
è puramente una cosa runtime e pensiamo noi
può ed è un lungo familiare
linee forse dove ce l’abbiamo già
punto interrogativo finale in c-sharp per
tipi di valori nullable quindi se ti permettiamo
per applicare quello a un tipo di riferimento forse
è così che dici che qualcosa è
nullable e se lo dici allora lì
sono cose che non ti lasceremo fare sul
altra mano se non lo dici e tu
optare in questo nuovo mondo in qualche modo poi noi
si aspetterà che la cosa lì dentro non sia
conosciuto e ti aiuteremo a mantenerlo
okay, quindi ciò che significa è che posso assegnare
sempre nel N, ma non nella S ed io
non posso assegnare n a s senza nessuno
qualificazione sia perché lo farebbe
che potresti sapere bene quindi sono solo
proteggere la variabile dal tipo
di variabili che non dovrebbe
tenere d’altra parte però quando io
vogliono usarlo per fare riferimento a esso che posso fare
s quella lunghezza senza qualifica
perché so che non è tutto ciò che so
probabilmente non è nullo perché noi
probabilmente non può dare alcun assoluto
garanzie in una lingua come C
affilato ma è probabilmente troveremo più
dei luoghi dove non sei
suppone cane di destra e così via la
altra mano e in quella lunghezza sta andando
per mettere in guardia su di esso potenzialmente essere
nulla e si sta potenzialmente ottenere che
un’eccezione di riferimento null giusta e così via
modo per aggirare che è alcuni di questi
nuove lingue hanno specifiche mune
tutte le funzioni di controllo vanno bene
avere come un nuovo modo quel modello
corrispondenza o errore che è possibile utilizzare per verificare
per ora non vogliamo cambiare come tu
controllare per null ci sono già come
sette modi di controllare per ora
c-sharp siamo cose buone e quindi noi
voler fare invece è tracciare con a
avere la traccia del compilatore quando controlli
che qualcosa era nullo e quindi usare
quella conoscenza quindi se hai un if
dichiarazione che controlla il e lo vede
n non è infatti nullo in questo caso quindi
lo sapremo nell’ambito di ciò
controllare ed è in realtà non nulla e lo faremo
Supponiamo che sia bello che tu punti
va bene altri modi per aggirare questo
Sì, ma è sorta di lavorare un
poco per aggirare ora invece di
viceversa, dove devi
lavora tutto il tempo per eliminare tutto il tuo
eccezioni di riferimento null quindi lo faranno
anche essere un dannato operatore che chiamiamo
dove puoi davvero camminare fino a
cosa nullable e mettere un bang postfix
bang su di esso e ciò significa la cosa il
cosa che stai ma assumendo nel tipo
sistema che non era nullo perché io
sapere meglio del compilatore così
a volte lo sai per quello
alcuni hai provato qualcos’altro e ii
sapevo da qualche parte e tu sai in questo caso
questo non è mai conosciuto e se sei audace
abbastanza da limitarti a quello che ottieni
insistere e ti lasceremo punto
senza un avviso tutto bene, quindi è così
un’altra cosa che abbiamo già
lavorando su questa funzione e speriamo
per ottenerlo in una versione extra di C
forte quindi spero che sarà
utile la cosa interessante di a
futuro come questo è che non deve
solo andare nella lingua, ma abbiamo bisogno di
assicurati che i nostri quadri e così via
sono adeguatamente annotati in modo che quando
costruisci su quelli che hai ragione
abilità nulle di propagate nel tuo
il proprio codice va bene quindi è un po ‘di a
futuro impegnativo ma penso che lo sia
ne vale la pena quindi penso che siamo alla fine
dove dico ricorda di compilare
le valutazioni sanno che siamo nel tempo
grazie mille
da qualche parte
tu

Please follow and like us: