Domanda

Sto cercando l'equivalente di C # default parola chiave, per esempio:

public T GetNext()
{
    T temp = default(T);
            ...

Grazie

È stato utile?

Soluzione

Ho trovato questo in un blog: " Che cosa significa questo codice C # sguardo come in F # (prima parte: le espressioni e le dichiarazioni)? "

  

C # ha un operatore chiamato "default"   che restituisce l'inizializzazione di zero   valore di un determinato tipo:

default(int) 
     

Si è limitata utilità; più comunemente si può usare   default (T) in un generico. F # ha una   costrutto simile come libreria   Funzione:

Unchecked.defaultof<int>

Altri suggerimenti

Tecnicamente parlando F # funzione Unchecked.defaultof<'a> è un equivalente all'operatore default in C #. Tuttavia, penso che la pena notare che defaultof è considerato come una cosa non sicuri in F # e deve essere utilizzato solo quando è veramente necessario (proprio come con null, che è anche scoraggiato in F #).

Nella maggior parte della situazione, si può evitare la necessità di defaultof utilizzando il tipo di option<'a>. Esso consente di rappresentare il fatto che un valore non è ancora disponibile.

Tuttavia, qui è un breve esempio per dimostrare l'idea. Il seguente codice C #:

T temp = default(T);
// Code that may call: temp = foo()
if (temp == default(T)) temp = bar(arg)
return temp;

Sarebbero scritto probabilmente come questo in F # (utilizzando le funzioni imperativi):

let temp = ref None
// Code that may call: temp := Some(foo())
match !temp with 
| None -> bar(arg)
| Some(temp) -> temp

Naturalmente questo dipende dal vostro scenario specifico e in alcuni casi defaultof è l'unica cosa che si può fare. Comunque, volevo solo far notare che defaultof è usato meno frequentemente in F #.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top