Articles of compilatore costruzione

Il compilatore c # decide di utilizzare lo stackalloc da solo?

Ho trovato un post sul blog che suggerisce che a volte il compilatore c # può decidere di mettere una matrice sullo stack anziché l’heap: Miglioramento delle prestazioni attraverso l’allocazione dello stack (Gestione della memoria .NET: parte 2) Questo ragazzo afferma che: A volte il compilatore decide di mettere le cose in pila da solo. […]

In particolare cosa fa un compilatore per ottimizzare in modo aggressivo il codice generato?

Ho letto le funzionalità di vari compilatori e mi sono imbattuto nel termine “ottimizzazione aggressiva” che molti compilatori hanno dichiarato di eseguire. LLVM, ad esempio, cita le seguenti funzioni di ottimizzazione in fase di compilazione: Memoria / puntatore specifico Loop trasforma Flusso di dati Aritmetica Eliminazione del codice morto inlining Cosa significa in particolare? Supponiamo […]

Dove posso scaricare il compilatore per C # 4.0 senza Visual Studio 2010?

Conosco le immagini di CTP VS 2010, ma posso scaricare solo .NET Framework 4.0 e il compilatore C #?

Perché Nullable non può essere compilato ma int? fa senza ‘usare System;’

In .Net 2, il codice: namespace ns { class Class1 { Nullable a; } } non si compila e dà l’errore: Non è stato ansible trovare il nome di tipo o spazio dei nomi ‘Nullable’ (ti manca una direttiva using o un riferimento all’assembly?) Manca using System; ma questo codice: namespace ns { class Class1 […]

Valutazione del compilatore del controllo nullo esplicito rispetto all’operatore a coalescenza nulla?

Considera il seguente codice, che utilizza due metodi leggermente diversi per controllare _instance e assegnarlo quando non è già impostato. class InstantiationTest { private Object _instance; public void Method1() { if(_instance == null) { _instance = new Object(); } } public void Method2() { _instance = _instance ?? new Object(); } } O VS o […]

Avviso di riferimento null di Visual Studio: perché non si è verificato un errore?

Ho notato qualcosa di particolare su Visual Studio. Innanzitutto, prova a digitare questo (C #) da qualche parte in una funzione: class Foo { public void Bar() { string s; int i = s.Length; } } Ora, immediatamente segnerà la s in s.Length come errore, dicendo ” Use of unassigned local variable ‘s’ “. D’altra […]

Ottimizzazione della moltiplicazione .NET

Il compilatore ottimizza le moltiplicazioni di 1? Cioè, considera: int a = 1; int b = 5 * a; L’espressione 5 * a sarà ottimizzata in soli 5? In caso contrario, lo sarà se a è definito come: const int a = 1;

I campi di backing anonimi sono ancora creati per le proprietà autoattive virtuali quando vengono sovrascritti?

Curiosità morbosa Dì che ho questa gerarchia: class Base { public virtual int Field { get; set; } } class Derived : Base { int _field; public override int Field { get { return _field; } set { _field = value; } } } Se istanzio Base , il compilatore creerà magicamente un campo di […]

MSBuild vs compilatore

Qual è la differenza tra l’uso di MSBuild e del compilatore C # da un prompt dei comandi? Voglio creare manualmente le mie soluzioni / progetti senza utilizzare Visual Studio e voglio imparare come utilizzare gli strumenti della riga di comando.

Perché è string.Empty più raccomandato di “”?

Perché è string.Empty più raccomandato di “” ? È perché quando il compilatore sta analizzando il codice e un ” viene, il compilatore si appresta a leggere una stringa? Ma in stringa. string.Empty il compilatore non sarà nemmeno pronto a leggere una stringa?