Pregunta

Estoy buscando el equivalente de C # default palabra clave, por ejemplo:

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

Gracias

¿Fue útil?

Solución

He encontrado esto en un blog: " Lo que hace este código C # mirada Al igual que en F # (primera parte: expresiones y declaraciones)? "

  

C # tiene un operador llamado "default"   que devuelve el-inicialización cero   valor de un tipo dado:

default(int) 
     

tiene una utilidad limitada; más comúnmente puede usar   predeterminado (T) en un genérico. F # tiene una   construcción similar como una biblioteca   Función:

Unchecked.defaultof<int>

Otros consejos

Técnicamente hablando F # función Unchecked.defaultof<'a> es un equivalente al operador default en C #. Sin embargo, creo que vale la pena señalar que defaultof es considerado como un insegura cosa en F # y debe usarse sólo cuando es realmente necesario (al igual que el uso de null, que también se desaconseja en Fa #).

En la mayor parte de la situación, se puede evitar la necesidad de defaultof utilizando el tipo option<'a>. Se le permite representar el hecho de que un valor aún no está disponible.

Sin embargo, aquí es un breve ejemplo para demostrar la idea. El siguiente código C #:

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

Probablemente sea escrita como este en F # (usando características imperativas):

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

Por supuesto, esto depende de su situación específica y en algunos casos defaultof es la única cosa que puede hacer. Sin embargo, sólo quería señalar que defaultof se usa con menos frecuencia en F #.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top