# In una classe che contiene solo risorse gestite Le risorse gestite sono risorse di cui il Garbage Collector del runtime è a conoscenza e di cui è sotto controllo. Ci sono molte classi disponibili nella BCL, ad esempio, come un SqlConnection che è una classe wrapper per una risorsa non gestita. Qu
LEGGERE# Accedi ai membri statici di una classe Consente di importare un tipo specifico e di utilizzare i membri statici del tipo senza qualificarli con il nome del tipo. Questo mostra un esempio usando metodi statici: using static System.Console; // ... string GetName() { WriteLine("Enter your
LEGGEREFornisce una comoda sintassi che garantisce il corretto utilizzo degli oggetti IDisposable. # Gotcha:restituire la risorsa che stai eliminando Quella che segue è una cattiva idea perché eliminerebbe il db variabile prima di restituirla. public IDBContext GetDBContext() { using (var db = new DBC
LEGGERE# Inferenza di tipo implicita (metodi) Quando si passano argomenti formali a un metodo generico, in genere è possibile dedurre implicitamente argomenti di tipo generico rilevanti. Se è possibile dedurre tutti i tipi generici, specificarli nella sintassi è facoltativo. Considera il seguente metodo
LEGGERE# Ereditarietà. Sequenza di chiamate dei costruttori Considera che abbiamo una classe Animal che ha una classe figlia Dog class Animal { public Animal() { Console.WriteLine("In Animals constructor"); } } class Dog : Animal { public Dog() { Console.Wri
LEGGERE# commenti Luso dei commenti nei tuoi progetti è un modo pratico per lasciare spiegazioni sulle tue scelte di progettazione e dovrebbe mirare a semplificare la vita tua (o di qualcun altro) durante la manutenzione o laggiunta al codice. Esistono due modi per aggiungere un commento al codice. # com
LEGGERE# Annotazione metodo semplice I commenti alla documentazione vengono inseriti direttamente sopra il metodo o la classe che descrivono. Iniziano con tre barre in avanti /// e consenti la memorizzazione delle metainformazioni tramite XML. /// <summary> /// Bar method description /// </summar
LEGGEREQuesto argomento descrive alcune convenzioni di denominazione di base usate durante la scrittura nel linguaggio C#. Come tutte le convenzioni, non vengono applicate dal compilatore, ma garantiranno la leggibilità tra gli sviluppatori. Per linee guida complete per la progettazione di .NET Framework,
LEGGERE# Ricorsività in inglese semplice La ricorsione può essere definita come: Un metodo che chiama se stesso finché non viene soddisfatta una condizione specifica. Un ottimo e semplice esempio di ricorsione è un metodo che otterrà il fattoriale di un dato numero: public int Factorial(int number) {
LEGGEREQuesto argomento cerca di dirci come possiamo scrivere programmi basati sullapproccio OOP. Ma non cerchiamo di insegnare il paradigma della programmazione orientata agli oggetti. Tratteremo i seguenti argomenti:classi, proprietà, ereditarietà, polimorfismo, interfacce e così via. # Classi: Lo sche
LEGGERELe parole chiave sono identificatori predefiniti e riservati con un significato speciale per il compilatore. Non possono essere usati come identificatori nel tuo programma senza il @ prefisso. Ad esempio @if è un identificatore legale ma non la parola chiave if . # come Il as parola chiave è un ope
LEGGERE# Creazione di un attributo di convalida personalizzato Gli attributi di convalida personalizzati possono essere creati derivando dal ValidationAttribute classe base, quindi sovrascrivendo virtual metodi secondo necessità. [AttributeUsage(AttributeTargets.Property, AllowMultiple = false, Inherited
LEGGERE# Argomenti opzionali Considerare precedente è la nostra definizione di funzione con argomenti opzionali. private static double FindAreaWithOptional(int length, int width=56) { try { return (length * width); } catch (Exception)
LEGGERE# Lordine degli argomenti non è necessario Puoi inserire argomenti con nome nellordine che preferisci. Metodo di esempio: public static string Sample(string left, string right) { return string.Join("-",left,right); } Esempio di chiamata: Console.WriteLine (Sample(left:"A&quo
LEGGERE# Metodi di estensione - panoramica I metodi di estensione sono stati introdotti in C# 3.0. I metodi di estensione estendono e aggiungono il comportamento ai tipi esistenti senza creare un nuovo tipo derivato, ricompilare o modificare in altro modo il tipo originale. Sono particolarmente utili quan
LEGGERE# Chiamare un metodo Chiamare un metodo statico: // Single argument System.Console.WriteLine("Hello World"); // Multiple arguments string name = "User"; System.Console.WriteLine("Hello, {0}!", name); Chiamare un metodo statico e memorizzarne il valore restituit
LEGGERE# Utilizzo semplice Gli inizializzatori di oggetti sono utili quando è necessario creare un oggetto e impostare subito un paio di proprietà, ma i costruttori disponibili non sono sufficienti. Supponi di avere una classe public class Book { public string Title { get; set; } public string Aut
LEGGERELe classi parziali ci offrono unopzione per dividere le classi in più parti e in più file di origine. Tutte le parti vengono combinate in ununica classe durante la compilazione. Tutte le parti devono contenere la parola chiave partial ,dovrebbe essere della stessa accessibilità. Tutte le parti devon
LEGGERE# Iniezione di dipendenze C# e ASP.NET con Unity Innanzitutto perché dovremmo usare liniezione di dipendenza nel nostro codice? Vogliamo disaccoppiare altri componenti da altre classi nel nostro programma. Ad esempio abbiamo la classe AnimalController che ha un codice come questo: public class Anim
LEGGERE# Singleton inizializzato staticamente public class Singleton { private readonly static Singleton instance = new Singleton(); private Singleton() { } public static Singleton Instance => instance; } Questa implementazione è thread-safe perché in questo caso instance loggetto viene i
LEGGERE