Oggetti e classi in Visual BasicObjects and classes in Visual Basic

Un oggetto è una combinazione di codice e dati che è possibile considerare come singola unità.An object is a combination of code and data that can be treated as a unit. Un oggetto può essere una parte di un'applicazione, ad esempio un controllo o un form.An object can be a piece of an application, like a control or a form. Anche un'intera applicazione può essere un oggetto.An entire application can also be an object.

Quando si crea un'applicazione in Visual Basic, utilizzano costantemente degli oggetti.When you create an application in Visual Basic, you constantly work with objects. È possibile usare oggetti forniti da Visual Basic, ad esempio controlli, form e i dati accedere agli oggetti.You can use objects provided by Visual Basic, such as controls, forms, and data access objects. È anche possibile usare gli oggetti da altre applicazioni all'interno di un'applicazione Visual Basic.You can also use objects from other applications within your Visual Basic application. È inoltre possibile creare oggetti personalizzati e definire per essi proprietà e metodi aggiuntivi.You can even create your own objects and define additional properties and methods for them. Per i programmi, gli oggetti svolgono la stessa funzione dei blocchi predefiniti. Consentono infatti di scrivere un pezzo di codice una sola volta e di riutilizzarlo quanto necessario.Objects act like prefabricated building blocks for programs — they let you write a piece of code once and reuse it over and over.

Questo argomento fornisce informazioni dettagliate sugli oggetti.This topic discusses objects in detail.

Oggetti e classiObjects and classes

Ogni oggetto in Visual Basic è definito da una classe.Each object in Visual Basic is defined by a class. che ne descrive le variabili, le proprietà, le routine e gli eventi.A class describes the variables, properties, procedures, and events of an object. Gli oggetti sono istanze di classi. Dopo aver definito una classe, sarà possibile creare tutti gli oggetti necessari.Objects are instances of classes; you can create as many objects you need once you have defined a class.

Per comprendere la relazione esistente tra un oggetto e la classe di appartenenza, si pensi alla relazione tra gli stampi per biscotti e i biscotti.To understand the relationship between an object and its class, think of cookie cutters and cookies. La classe è lo stampoThe cookie cutter is the class. che definisce le caratteristiche di ogni biscotto, ad esempio le dimensioni e la forma.It defines the characteristics of each cookie, for example size and shape. La classe viene usata per creare oggetti.The class is used to create objects. Gli oggetti sono i biscotti.The objects are the cookies.

Per poter accedere ai membri di un oggetto, è prima necessario creare l'oggetto stesso.You must create an object before you can access its members.

Per creare un oggetto da una classeTo create an object from a class

  1. Scegliere la classe da cui si vuole creare un oggetto.Determine from which class you want to create an object.

  2. Scrivere un'istruzione Dim per creare una variabile a cui assegnare un'istanza di una classe.Write a Dim Statement to create a variable to which you can assign a class instance. La variabile dovrebbe essere del tipo della classe desiderata.The variable should be of the type of the desired class.

    Dim nextCustomer As customer
    
  3. Aggiungere la parola chiave New per inizializzare la variabile su una nuova istanza della classe.Add the New Operator keyword to initialize the variable to a new instance of the class.

    Dim nextCustomer As New customer
    
  4. È ora possibile accedere ai membri della classe mediante la variabile oggetto.You can now access the members of the class through the object variable.

    nextCustomer.accountNumber = lastAccountNumber + 1
    

Nota

Quando possibile, è necessario dichiarare che la variabile appartiene al tipo classe a cui si vuole assegnarla.Whenever possible, you should declare the variable to be of the class type you intend to assign to it. Questa operazione è definita associazione anticipata.This is called early binding. Se il tipo di classe non è noto in fase di compilazione, è possibile richiamare l'associazione tardiva dichiarando che la variabile è del tipo di dati Object.If you don't know the class type at compile time, you can invoke late binding by declaring the variable to be of the Object Data Type. Questo tipo di associazione, tuttavia, può determinare un rallentamento delle prestazioni e limitare l'accesso ai membri dell'oggetto in fase di esecuzione.However, late binding can make performance slower and limit access to the run-time object's members. Per altre informazioni, vedere Object Variable Declaration (Dichiarazione di variabili oggetto).For more information, see Object Variable Declaration.

Istanze multipleMultiple instances

Gli oggetti creati da una classe sono spesso identici.Objects newly created from a class are often identical to each other. Una volta definiti come singoli oggetti, è comunque possibile modificarne le variabili e le proprietà indipendentemente dalle altre istanze.Once they exist as individual objects, however, their variables and properties can be changed independently of the other instances. Se, ad esempio, si aggiungono tre caselle di controllo a un form, ogni oggetto casella di controllo è un'istanza della classe CheckBox.For example, if you add three check boxes to a form, each check box object is an instance of the CheckBox class. I singoli oggetti CheckBox condividono un set di caratteristiche e funzionalità, ad esempio proprietà, variabili, routine ed eventi, definito dalla classe.The individual CheckBox objects share a common set of characteristics and capabilities (properties, variables, procedures, and events) defined by the class. Ognuno di essi, tuttavia, ha un proprio nome, può essere abilitato e disabilitato separatamente e può essere posizionato in un punto diverso del form.However, each has its own name, can be separately enabled and disabled, and can be placed in a different location on the form.

Membri di oggettiObject members

Un oggetto è un elemento di un'applicazione che rappresenta un'istanza di una classe.An object is an element of an application, representing an instance of a class. I campi, le proprietà, i metodi e gli eventi sono i blocchi predefiniti degli oggetti e ne costituiscono i membri.Fields, properties, methods, and events are the building blocks of objects and constitute their members.

Accesso ai membriMember Access

Per accedere a un membro di un oggetto, è necessario specificare il nome della variabile oggetto, un punto (.) e il nome del membro, nell'ordine indicato.You access a member of an object by specifying, in order, the name of the object variable, a period (.), and the name of the member. Nell'esempio seguente viene impostata la proprietà Text di un oggetto Label.The following example sets the Text property of a Label object.

warningLabel.Text = "Data not saved"

Elenco di membri IntelliSenseIntelliSense listing of members

Quando si richiama l'opzione Elenca membri relativa a una classe, ad esempio quando si digita un punto (.) come operatore di accesso ai membri, IntelliSense elenca i membri di tale classe.IntelliSense lists members of a class when you invoke its List Members option, for example when you type a period (.) as a member-access operator. Se si digita il punto dopo il nome di una variabile dichiarata come istanza della classe, vengono elencati tutti i membri di istanza ma nessuno dei membri condivisi.If you type the period following the name of a variable declared as an instance of that class, IntelliSense lists all the instance members and none of the shared members. Se si digita il punto dopo il nome della classe, vengono elencati tutti i membri condivisi ma nessuno dei membri di istanza.If you type the period following the class name itself, IntelliSense lists all the shared members and none of the instance members. Per altre informazioni, vedere Using IntelliSense (Uso di IntelliSense).For more information, see Using IntelliSense.

Campi e proprietàFields and properties

I campi e le proprietà rappresentano le informazioni contenute in un oggetto.Fields and properties represent information stored in an object. È possibile recuperare e impostare i valori dei campi e delle proprietà usando le istruzioni di assegnazione, nello stesso modo in cui si recuperano e impostano le variabili locali di una routine.You retrieve and set their values with assignment statements the same way you retrieve and set local variables in a procedure. Nell'esempio seguente viene recuperata la proprietà Width e impostata la proprietà ForeColor di un oggetto Label.The following example retrieves the Width property and sets the ForeColor property of a Label object.

Dim warningWidth As Integer = warningLabel.Width
warningLabel.ForeColor = System.Drawing.Color.Red

Si noti che un campo viene chiamato anche variabile membro.Note that a field is also called a member variable.

Usare le routine delle proprietà nei casi seguenti:Use property procedures when:

  • È necessario controllare come e quando un valore viene impostato o recuperato.You need to control when and how a value is set or retrieved.

  • La proprietà presenta un insieme di valori ben definito che è necessario convalidare.The property has a well-defined set of values that need to be validated.

  • L'impostazione di un valore determina modifiche percettibili nello stato dell'oggetto, ad esempio una proprietà IsVisible.Setting the value causes some perceptible change in the object's state, such as an IsVisible property.

  • L'impostazione della proprietà determina modifiche ad altre variabili interne o ai valori di altre proprietà.Setting the property causes changes to other internal variables or to the values of other properties.

  • Per poter impostare o recuperare la proprietà, è necessario eseguire prima una serie di passaggi.A set of steps must be performed before the property can be set or retrieved.

Usare i campi nei casi seguenti:Use fields when:

  • Il valore è di tipo auto-convalidante.The value is of a self-validating type. Ad esempio, se a una variabile Boolean viene assegnato un valore diverso da True o False, si verifica un errore o una conversione automatica di dati.For example, an error or automatic data conversion occurs if a value other than True or False is assigned to a Boolean variable.

  • Tutti i valori compresi nell'intervallo supportato dal tipo dati sono validi.Any value in the range supported by the data type is valid. Questa affermazione è vera per diverse proprietà di tipo Single o Double.This is true of many properties of type Single or Double.

  • La proprietà è un tipo dati String. Non è presente alcun vincolo riguardo alle dimensioni o al valore della stringa.The property is a String data type, and there is no constraint on the size or value of the string.

  • Per altre informazioni, vedere Routine Property.For more information, see Property Procedures.

MetodiMethods

Un metodo è un'azione che può essere eseguita da un oggetto.A method is an action that an object can perform. Ad esempio, Add è un metodo dell'oggetto ComboBox che aggiunge una nuova voce in una casella combinata.For example, Add is a method of the ComboBox object that adds a new entry to a combo box.

Nell'esempio seguente viene illustrato il metodo Start di un oggetto Timer.The following example demonstrates the Start method of a Timer object.

Dim safetyTimer As New System.Windows.Forms.Timer
safetyTimer.Start()

Si noti che un metodo è semplicemente una routine esposta da un oggetto.Note that a method is simply a procedure that is exposed by an object.

Per altre informazioni, vedere Routine.For more information, see Procedures.

EventiEvents

Un evento è un'azione che viene riconosciuta da un oggetto, ad esempio il clic del mouse o la pressione di un tasto, e alla quale è possibile rispondere mediante un codice scritto appositamente.An event is an action recognized by an object, such as clicking the mouse or pressing a key, and for which you can write code to respond. Gli eventi possono verificarsi come conseguenza di un'azione utente o un codice programma oppure possono essere generati dal sistema.Events can occur as a result of a user action or program code, or they can be caused by the system. Il codice che segnala un evento è detto codice che genera l'evento, mentre il codice che risponde all'evento è detto codice che gestisce l'evento.Code that signals an event is said to raise the event, and code that responds to it is said to handle it.

È inoltre possibile sviluppare eventi personalizzati generati dai propri oggetti e gestiti da altri oggetti.You can also develop your own custom events to be raised by your objects and handled by other objects. Per altre informazioni, vedere Eventi.For more information, see Events.

Membri di istanza e membri condivisiInstance members and shared members

Quando si crea un oggetto da una classe, il risultato è un'istanza di tale classe.When you create an object from a class, the result is an instance of that class. I membri non dichiarati con la parola chiave Shared sono membri di istanza e appartengono soltanto a tale istanza.Members that are not declared with the Shared keyword are instance members, which belong strictly to that particular instance. Un membro di istanza appartenente a una determinata istanza è indipendente dallo stesso membro appartenente a un'altra istanza della stessa classe.An instance member in one instance is independent of the same member in another instance of the same class. Una variabile membro di istanza, ad esempio, può avere valori differenti in istanze differenti.An instance member variable, for example, can have different values in different instances.

I membri dichiarati con la parola chiave Shared sono membri condivisi. Questo significa che appartengono all'intera classe e non a una particolare istanza.Members declared with the Shared keyword are shared members, which belong to the class as a whole and not to any particular instance. Un membro condiviso viene definito una sola volta, indipendentemente dal numero di istanze della relativa classe che vengono create. Questo è vero anche se non viene creata alcuna istanza.A shared member exists only once, no matter how many instances of its class you create, or even if you create no instances. Una variabile membro condiviso, ad esempio, può avere un unico valore, che può essere usato da tutto il codice che ha accesso alla classe.A shared member variable, for example, has only one value, which is available to all code that can access the class.

Accesso a membri non condivisiAccessing nonshared members

Per accedere a un membro non condiviso di un oggettoTo access a nonshared member of an object
  1. Verificare che l'oggetto sia stato creato a partire dalla relativa classe e che sia stato assegnato a una variabile oggetto.Make sure the object has been created from its class and assigned to an object variable.

    Dim secondForm As New System.Windows.Forms.Form
    
  2. Nell'istruzione che consente l'accesso al membro inserire il nome della variabile oggetto, quindi l'operatore di accesso ai membri (.) e infine il nome del membro.In the statement that accesses the member, follow the object variable name with the member-access operator (.) and then the member name.

    secondForm.Show()
    

Accesso a membri condivisiAccessing shared members

Per accedere a un membro condiviso di un oggettoTo access a shared member of an object
  • Inserire il nome della classe, quindi l'operatore di accesso ai membri (.) e infine il nome del membro.Follow the class name with the member-access operator (.) and then the member name. È necessario accedere sempre a un membro Shared dell'oggetto tramite il nome della classe.You should always access a Shared member of the object directly through the class name.

    MsgBox("This computer is called " & Environment.MachineName)
    
  • In alternativa, se è già stato creato un oggetto a partire dalla classe, è possibile accedere a un membro Shared tramite la variabile dell'oggetto.If you have already created an object from the class, you can alternatively access a Shared member through the object's variable.

Differenze tra classi e moduliDifferences between classes and modules

La differenza principale tra le classi e i moduli consiste nel fatto che è possibile creare istanze delle classi come oggetti, ma tale operazione non è possibile per i moduli standard.The main difference between classes and modules is that classes can be instantiated as objects while standard modules cannot. Poiché è presente una sola copia di dati di un modulo standard, quando una parte del programma modifica una variabile pubblica in un modulo standard, a una successiva lettura della variabile qualsiasi altra parte del programma ottiene lo stesso valore.Because there is only one copy of a standard module's data, when one part of your program changes a public variable in a standard module, any other part of the program gets the same value if it then reads that variable. I dati oggetto, invece, sono separati per ciascun oggetto di cui è stata creata un'istanza.In contrast, object data exists separately for each instantiated object. A differenza dei moduli standard, inoltre, le classi possono implementare interfacce.Another difference is that unlike standard modules, classes can implement interfaces.

Nota

Quando si applica un modificatore Shared a un membro di una classe, il modificatore viene associato alla classe stessa anziché a una particolare istanza di quest'ultima.When the Shared modifier is applied to a class member, it is associated with the class itself instead of a particular instance of the class. L'accesso al membro avviene direttamente tramite il nome della classe, nello stesso modo in cui si accede ai membri del modulo.The member is accessed directly by using the class name, the same way module members are accessed.

Le classi e i moduli usano inoltre ambiti diversi per i relativi membri.Classes and modules also use different scopes for their members. I membri definiti di una classe vengono dichiarati nell'ambito di una specifica istanza di tale classe ed esistono solo per la durata dell'oggetto.Members defined within a class are scoped within a specific instance of the class and exist only for the lifetime of the object. Per accedere ai membri di una classe dall'esterno di quest'ultima, è necessario usare nomi completi nel formato Oggetto.Membro.To access class members from outside a class, you must use fully qualified names in the format of Object.Member.

D'altra parte, i membri dichiarati all'interno di un modulo sono accessibili pubblicamente per impostazione predefinita e ad essi può accedere qualsiasi codice che abbia accesso al modulo.On the other hand, members declared within a module are publicly accessible by default, and can be accessed by any code that can access the module. Questo significa che le variabili presenti in un modulo standard sono effettivamente variabili globali poiché sono visibili da qualsiasi punto del progetto ed esistono per la durata del programma.This means that variables in a standard module are effectively global variables because they are visible from anywhere in your project, and they exist for the life of the program.

Riutilizzo di classi e oggettiReusing classes and objects

Grazie agli oggetti, è possibile dichiarare variabili e routine una sola volta e quindi riutilizzarle quando necessario.Objects let you declare variables and procedures once and then reuse them whenever needed. Se, ad esempio, si desidera aggiungere un correttore ortografico a un'applicazione, è possibile definire tutte le variabili e le funzioni di supporto per fornire la funzionalità di correttore ortografico.For example, if you want to add a spelling checker to an application you could define all the variables and support functions to provide spell-checking functionality. Se il controllo ortografico viene creato come classe, sarà possibile riutilizzarlo in altre applicazioni aggiungendo un riferimento all'assembly compilato.If you create your spelling checker as a class, you can then reuse it in other applications by adding a reference to the compiled assembly. Soluzione ancora migliore, sarà possibile risparmiare lavoro usando una classe correttore ortografico già sviluppata da altri programmatori.Better yet, you may be able to save yourself some work by using a spelling checker class that someone else has already developed.

.NET Framework offre numerosi esempi di componenti che sono disponibili per l'uso.The .NET Framework provides many examples of components that are available for use. Nell'esempio seguente viene usata la classe TimeZone nello spazio dei nomi System.The following example uses the TimeZone class in the System namespace. La classe TimeZone specifica i membri che consentono di recuperare le informazioni sul fuso orario del computer corrente.TimeZone provides members that allow you to retrieve information about the time zone of the current computer system.

Public Sub examineTimeZone()
    Dim tz As System.TimeZone = System.TimeZone.CurrentTimeZone
    Dim s As String = "Current time zone is "
    s &= CStr(tz.GetUtcOffset(Now).Hours) & " hours and "
    s &= CStr(tz.GetUtcOffset(Now).Minutes) & " minutes "
    s &= "different from UTC (coordinated universal time)"
    s &= vbCrLf & "and is currently "
    If tz.IsDaylightSavingTime(Now) = False Then s &= "not "
    s &= "on ""summer time""."
    MsgBox(s)
End Sub

Nell'esempio precedente, la prima istruzione Dim dichiara una variabile oggetto di tipo TimeZone e assegna alla variabile un oggetto TimeZone restituito dalla proprietà CurrentTimeZone.In the preceding example, the first Dim Statement declares an object variable of type TimeZone and assigns to it a TimeZone object returned by the CurrentTimeZone property.

Relazioni tra oggettiRelationships among objects

Gli oggetti possono essere posti in relazione tra loro in diversi modi.Objects can be related to each other in several ways. Esistono due tipi principali di relazione, ovvero gerarchica e di contenimento.The principal kinds of relationship are hierarchical and containment.

Relazione gerarchicaHierarchical relationship

Se sono presenti classi di maggiore importanza e classi da esse derivate, tra le prime e le seconde esiste una relazione gerarchica.When classes are derived from more fundamental classes, they are said to have a hierarchical relationship. Le gerarchie di classi sono utili per descrivere gli elementi che sono un sottotipo di una classe più generale.Class hierarchies are useful when describing items that are a subtype of a more general class.

Nell'esempio seguente, si supponga di voler definire un tipo speciale di classe Button che si comporti come una classe Button normale ma che allo stesso tempo esponga un metodo per invertire i colori di sfondo e di primo piano.In the following example, suppose you want to define a special kind of Button that acts like a normal Button but also exposes a method that reverses the foreground and background colors.

Per definire una classe come derivata da una classe già esistenteTo define a class is derived from an already existing class
  1. Usare un'istruzione Class per definire una classe dalla quale creare l'oggetto necessario.Use a Class Statement to define a class from which to create the object you need.

    Public Class reversibleButton
    

    Verificare che l'ultima riga di codice della classe sia seguita da un'istruzione End Class.Be sure an End Class statement follows the last line of code in your class. Per impostazione predefinita, quando si immette un'istruzione Class l'ambiente di sviluppo integrato (IDE) genera automaticamente un'istruzione End Class.By default, the integrated development environment (IDE) automatically generates an End Class when you enter a Class statement.

  2. Aggiungere un'istruzione Inherits subito dopo l'istruzione Class.Follow the Class statement immediately with an Inherits Statement. Specificare la classe dalla quale deriva la nuova classe.Specify the class from which your new class derives.

    Inherits System.Windows.Forms.Button
    

    La nuova classe eredita tutti i membri definiti dalla classe di base.Your new class inherits all the members defined by the base class.

  3. Aggiungere il codice per i membri aggiuntivi esposti dalla classe derivata.Add the code for the additional members your derived class exposes. Ad esempio, è possibile aggiungere un metodo reverseColors. La classe derivata sarà simile alla seguente:For example, you might add a reverseColors method, and your derived class might look as follows:

    Public Class reversibleButton
        Inherits System.Windows.Forms.Button
            Public Sub reverseColors()
                Dim saveColor As System.Drawing.Color = Me.BackColor
                Me.BackColor = Me.ForeColor
                Me.ForeColor = saveColor
           End Sub
    End Class
    

    Se si crea un oggetto dalla classe reversibleButton, tale oggetto potrà accedere a tutti i membri della classe Button, nonché al metodo reverseColors e a qualsiasi altro membro nuovo definito in reversibleButton.If you create an object from the reversibleButton class, it can access all the members of the Button class, as well as the reverseColors method and any other new members you define on reversibleButton.

Le classi derivate ereditano i membri della classe su cui sono basate, consentendo di raggiungere una maggiore complessità mano a mano che si avanza nella gerarchia.Derived classes inherit members from the class they are based on, allowing you to add complexity as you progress in a class hierarchy. Per altre informazioni, vedere Nozioni fondamentali sull'ereditarietà.For more information, see Inheritance Basics.

Compilazione del codiceCompiling the code

Verificare che il compilatore possa accedere alla classe da cui si vuole derivare la nuova classe.Be sure the compiler can access the class from which you intend to derive your new class. A tale scopo è possibile fornire il nome completo della classe, come nell'esempio precedente, oppure specificare il relativo spazio dei nomi in un'istruzione Imports (tipo e spazio dei nomi .NET).This might mean fully qualifying its name, as in the preceding example, or identifying its namespace in an Imports Statement (.NET Namespace and Type). Se la classe si trova in un progetto differente, può essere necessario aggiungere un riferimento a tale progetto.If the class is in a different project, you might need to add a reference to that project. Per altre informazioni, vedere Gestione dei riferimenti in un progetto.For more information, see Managing references in a project.

Relazione di contenutoContainment relationship

Un altro tipo di relazione tra oggetti è la relazione di contenimento.Another way that objects can be related is a containment relationship. Gli oggetti contenitore incapsulano logicamente altri oggetti.Container objects logically encapsulate other objects. Ad esempio, l'oggetto OperatingSystem contiene logicamente un oggetto Version, restituito tramite la proprietà Version.For example, the OperatingSystem object logically contains a Version object, which it returns through its Version property. Tenere presente che l'oggetto contenitore non contiene fisicamente altri oggetti.Note that the container object does not physically contain any other object.

RaccolteCollections

Un tipo particolare di contenimento degli oggetti è rappresentato dalle raccolte.One particular type of object containment is represented by collections. Le raccolte sono gruppi di oggetti simili che possono essere enumerati.Collections are groups of similar objects that can be enumerated. Visual Basic supporta una sintassi specifica nel For Each... Istruzione Next che consente di scorrere gli elementi di una raccolta.Visual Basic supports a specific syntax in the For Each...Next Statement that allows you to iterate through the items of a collection. Inoltre, le raccolte consentono spesso di usare un Item[String] per recuperare gli elementi in base al relativo indice o tramite l'associazione a una stringa univoca.Additionally, collections often allow you to use an Item[String] to retrieve elements by their index or by associating them with a unique string. Le raccolte possono risultare di uso più semplice rispetto alle matrici, in quanto consentono di aggiungere o rimuovere elementi senza ricorrere agli indici.Collections can be easier to use than arrays because they allow you to add or remove items without using indexes. Grazie alla loro facilità d'uso, vengono spesso usate per l'archiviazione di form e controlli.Because of their ease of use, collections are often used to store forms and controls.

Procedura dettagliata: Definizione delle classi\Walkthrough: Defining Classes\ Viene fornita una descrizione dettagliata della creazione di una classe.Provides a step-by-step description of how to create a class.

I metodi e proprietà di overload\Overloaded Properties and Methods\ Metodi e proprietà di overloadOverloaded Properties and Methods

Nozioni fondamentali sull'ereditarietà\Inheritance Basics\ Vengono illustrati modificatori di ereditarietà, override di metodi e proprietà, MyClass e MyBase.Covers inheritance modifiers, overriding methods and properties, MyClass, and MyBase.

Durata degli oggetti: Come gli oggetti vengono creati ed eliminati\Object Lifetime: How Objects Are Created and Destroyed\ Vengono illustrate la creazione e l'eliminazione delle istanze di classe.Discusses creating and disposing of class instances.

Tipi anonimi\Anonymous Types\ Viene descritto come creare e usare i tipi anonimi, che consentono di creare oggetti senza scrivere una definizione della classe per il tipo dati.Describes how to create and use anonymous types, which allow you to create objects without writing a class definition for the data type.

Inizializzatori di oggetto: Tipi denominati e anonimi\Object Initializers: Named and Anonymous Types\ Vengono discussi gli inizializzatori di oggetto, usati per creare istanze di tipi denominati e anonimi mediante un'unica espressione.Discusses object initializers, which are used to create instances of named and anonymous types by using a single expression.

Procedura: Dedurre i nomi delle proprietà e i tipi nelle dichiarazioni di tipo anonimo\How to: Infer Property Names and Types in Anonymous Type Declarations\ Viene descritto come dedurre nomi e tipi di proprietà nelle dichiarazioni di tipo anonimo.Explains how to infer property names and types in anonymous type declarations. Vengono forniti esempi di inferenze riuscite e non riuscite.Provides examples of successful and unsuccessful inference.