Frage

Ich suche das Äquivalent von C # default Schlüsselwort, z:

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

Danke

War es hilfreich?

Lösung

Ich fand diese in einem Blog: „ Was bedeutet diese C # -Code-Look wie in F # (Teil eins: Ausdrücke und Aussagen)? "

  

C # hat einen Operator namens "default"   dass Rückkehr der Null Initialisierung   Wert eines bestimmten Typs:

default(int) 
     

Es hat begrenzten Nutzen; am häufigsten können Sie verwenden   Standard (T) in einem allgemeinen. F # hat eine   ähnliches Konstrukt als Bibliothek   Funktion:

Unchecked.defaultof<int>

Andere Tipps

Technisch F # Funktion Unchecked.defaultof<'a> gesprochen ist ein Äquivalent zu den default Operator in C #. Aber ich denke, es ist erwähnenswert, dass defaultof gilt als unsicher , was in F # und sollten nur verwendet werden, wenn es wirklich notwendig ist (genau wie mit null, die auch in F # abgeraten).

In den meisten der Situation können Sie die Notwendigkeit defaultof vermeiden, indem die option<'a>-Typ. Es ermöglicht Ihnen, die Tatsache zu stellen, dass ein Wert noch nicht verfügbar ist.

Allerdings ist hier ein kurzes Beispiel die Idee zu demonstrieren. Der folgende C # -Code:

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

Würde wahrscheinlich wie dies in F # geschrieben werden (unter Verwendung zwingend notwendig, Merkmale):

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

Dies ist natürlich abhängig von Ihrem spezifischen Szenario und in einigen Fällen defaultof ist das einzige, was Sie tun können. Allerdings habe ich nur darauf hinweisen wollte, dass defaultof verwendet wird weniger häufig in F #.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top