Question

Je cherche l'équivalent de mot-clé C # default, par exemple:

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

Merci

Était-ce utile?

La solution

J'ai trouvé dans un blog: « Que ce C # look Code comme dans F # (première partie: expressions et déclarations)? "

  

C # a un opérateur appelé « par défaut »   qui renvoie le zéro d'initialisation   La valeur d'un type donné:

default(int) 
     

Il a une utilité limitée; le plus souvent, vous pouvez utiliser   par défaut (T) dans un générique. F # a   construction similaire à une bibliothèque   fonction:

Unchecked.defaultof<int>

Autres conseils

Techniquement parlant F # Unchecked.defaultof<'a> fonction est un équivalent à l'opérateur de default en C #. Cependant, je pense qu'il est intéressant de noter que defaultof est considéré comme un élément dangereux chose en F # et doit être utilisé que lorsqu'il est vraiment nécessaire (tout comme l'utilisation null, qui est également déconseillée dans F #).

Dans la plupart des cas, vous pouvez éviter la nécessité d'defaultof en utilisant le type de option<'a>. Il vous permet de représenter le fait qu'une valeur est pas encore disponible.

Cependant, voici un bref exemple pour démontrer l'idée. Le code C #:

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

serait probablement écrit comme ça dans F # (en utilisant les caractéristiques impératives):

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

Bien sûr, cela dépend de votre scénario spécifique et defaultof dans certains cas, est la seule chose que vous pouvez faire. Cependant, je voulais juste souligner que defaultof est moins fréquemment utilisé dans F #.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top