Questa pagina è stata utile?
I suggerimenti relativi al contenuto di questa pagina sono importanti. Comunicaceli.
Altri suggerimenti?
1500 caratteri rimanenti
Modifiche importanti in F# 3.0
Collapse the table of content
Expand the table of content
Il presente articolo è stato tradotto automaticamente. Passare il puntatore sulle frasi nell'articolo per visualizzare il testo originale. Ulteriori informazioni.
Traduzione
Originale

Modifiche importanti in F# 3.0

Visual Studio 2012

Questo argomento descrive le modifiche sostanziali nella versione 3.0 del compilatore F# e della lingua per la versione Visual Studio 2012.

Nella tabella seguente sono elencate le modifiche sostanziali apportate in F# 3.0.

Area di modifica sostanziale

Descrizione

Rientro

Alcuni rientri errati che sono stati erroneamente accettati da versioni precedenti del compilatore F# generano un errore di compilazione nella versione corrente. Per una descrizione completa delle regole di indentazione, vedere Linee guida per la formattazione del codice (F#).

Citazioni, metodi e proprietà delle strutture che sono variabili locali

Adesso, è un errore chiamare un metodo o una proprietà di una struttura in una citazione quando tale struttura è una variabile locale. Le versioni precedenti di F# consentivano questo comportamento.

[<Struct>]
type S =
   member this.Valid = true
let check () =
    let mutable s = S()
    <@ s.Valid @> // Error

Per ovviare a questo requisito, creare una copia della variabile locale, come illustrato nel seguente esempio:

let check () =
    let s = S()
    <@ 
        let s = s
        s.Valid 
    @>

Uguaglianza di valori Null impropri

Nelle versioni precedenti, è possibile confrontare i valori null utilizzando l' operatore = indipendentemente dal fatto che siano valori appropriati o impropri di un tipo. Un valore appropriato è un valore null che il tipo consente; un null improprio non è un valore valido per il tipo. Il comportamento corrente prevede di generare una NullReferenceException quando si tenta di utilizzare l' operatore = per confrontare valori Null impropri, come mostra il seguente codice.

let a : int ref = Unchecked.defaultof<_>

let main() =
    printfn "%A" (a = a)
main()

Commenti e stringhe

Nelle versioni precedenti, un token di chiusura del commento *) in una stringa tra virgolette triple (una stringa contenente """) era analizzato come parte di una stringa. Nella versione corrente, il token viene analizzato come un carattere di chiusura del commento. Pertanto, il codice seguente, in precedenza veniva accettato, verrà generato un errore nella versione corrente:

(* """ *)
Let x = 1

Per ulteriori informazioni, vedere Stringhe (F#).

Proprietà che hanno tipi diversi di getter e setter.

Nelle versioni precedenti di F#, Il compilatore F# consentiva, scorrettamente, metodi getter e setter per avere tipi non associati (ad esempio, un getter di tipo int e un setter di tipo string). In F# 3.0, il compilatore segnala una dichiarazione come errore.

Aggiunte alla community

AGGIUNGI
Microsoft sta conducendo un sondaggio in linea per comprendere l'opinione degli utenti in merito al sito Web di MSDN. Se si sceglie di partecipare, quando si lascia il sito Web di MSDN verrà visualizzato il sondaggio in linea.

Si desidera partecipare?
Mostra:
© 2015 Microsoft