Newsgroup: it.comp.lang.visual-basic
Titolo: VB9 Anonymous Type

Pasticciando con VB 2008 ho scoperto gli Anonymous Type.
In pratica è possibile creare un oggetto al volo, senza definire 
precedentemente una classe. Basta definire le sue proprietà al momento 
della creazione. Esempio:
Dim aBeautifulGirl = New With {.Nome = "Jessica", .Cognome = "Alba"}
Label1.Text = aBeautifulGirl.Nome
La domanda immediata è: a cosa serve?
-- 
news:it-alt.comp.software.openoffice : Il newsgroup dedicato a
OpenOffice.org, la suite open source di applicazioni per ufficio.
Saluti, VITRIOL

Questa invece mi sembra carina. Extension methods.
Sono metodi "fittizi" che permettono di estendere una classe con metodi 
personalizzati in modo molto semplice. Esempio, in un modulo:
Module Module1
     <Runtime.CompilerServices.Extension()> _
     Public Function Logaritmo(ByVal d As Double) As Double
         Return Math.Log10(d)
     End Function
End Module
A questo punto il metodo è utilizzabile come se fosse un normale metodo 
di Double. Esempio:
Dim myDbl As Double = 123
Dim myDblLog As Double
myDblLog = myDbl.Logaritmo()


Simpatico :P
In effetti anche io me lo chiedo... dopotutto per una classe "piccola" è 
sempre meglio fare un unico file dove raggruppare, in quanto ad esempio se 
poi bisogna cambiare un tipo è un tragedia.
Una domanda, ma invece i metodi non è possibile implementarli negli oggetti 
creati come Anonymous Type?
Bye,
-- 
Carmine ( 
pikachu...@gmail.com
 (Togli la scritta NOSPAM) )
Webmaster di The Total Site: 
http://www.thetotalsite.it
My Blog: 
http://blog.thetotalsite.it
 

 creati come Anonymous Type?
Non ne ho idea, ma ne dubito. Da quello che posso capire, pare che la 
maggior parte di questi nuovi costrutti serva a semplificare la nuova 
funzionalità LINQ. Che dovrebbe essere la vera rivoluzione del linguaggio.
In pratica è possibile eseguire delle query su collezioni di oggetti o 
altro.
Io ho provato questo, tanto per tentare di capire:
Ho un array che contiene nomi di persona, e voglio estrarre tutti quelli 
che cominciano con la M:
Dim nomi() As String = {"Mario", "Gianni", "Roberto", "Mauro", "Guido"} 
Dim risultato = From s In nomi Where s.StartsWith("M") Select s
Ora "risultato" è una collezione che contiene solo le stringhe che 
iniziavano con M. Se faccio:
For Each s As String In risultato
     Debug.Print(s)
Next
Il uscita avrò:
 > Mario
 > Mauro


La maggior parte delle novita' sono di supporto a LINQ (Language Integrated 
Query)
Anonymous methods: Estendono IEnumerable aggiungendo una serie di metodi 
(tipo Where, OrderBy...) che vengono usati quando crei una query
Anonymous Types: Sono tipi che non hanno un nome e servono quando scrivi 
qualcosa tipo
From p in Person select New With .FullName=p.Nome+" " + p.Cognome ottenendo 
una collezione di istanze di un tipo (il nome e' generato dal 
compilatore...) che contiene una proprieta' FullName inizializzata con 
Nome+Cognome
Type Initializers:  Se hai una classe con 2 proprieta' Nome e Cognome puoi 
inizializzarla usando
dim p as new Person With {.Nome="Foo", .Cognome="Bar"}
http://blogs.ugidotnet.org/corrado/archive/2007/07/20/86292.aspx
Inferred Types= ovvero la possibilita' di scrivere Dim x=12 e x viene 
automaticamente dichiarata di valore intero, se invece scrivi Dim s ="ciao" 
allora s e' di tipo stringa (attenzione che bisogna avere l'opzione Option 
Infer="On")
Lambda Expressions: troppo luna da spiegare leggi qui: 
http://blogs.ugidotnet.org/corrado/archive/2007/07/13/85636.aspx
Poi ci sono Relaxed Delegates, Nullable types, XML integration e LINQ! :-)
HTH
-- 
Corrado Cavalli [Microsoft .NET MVP-MCP]
UGIdotNET - 
http://www.ugidotnet.org
Weblog: 
http://blogs.ugidotnet.org/corrado/

 Query)
Sì, ho visto che ruota quasi tutto intorno a questo. Grazie.
