質問

私は例えば、C#のdefaultキーワードの同等を探しています:

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

おかげ

役に立ちましたか?

解決

私はブログでこれを見つけた:「このC#のコードを見て何以下のようなF#で(パート1:式と文)?に "

  

C#が「デフォルト」と呼ばれる演算子を持っています   それは、ゼロ初期化を返します   所与のタイプの値:

default(int) 
     

これは、限られた有用性を有します。最も一般的に使用すること   ジェネリックのデフォルト(T)。 F#が持っています   ライブラリと同様の構造   機能:

Unchecked.defaultof<int>

他のヒント

技術的にF#関数Unchecked.defaultof<'a>はC#でdefault演算と等価です。しかし、私はそれがdefaultofはF#での、安全でないのものとしてみなされ、(ちょうどまた、F#で推奨されてnullを、使用してように)それは本当に必要な場合にのみ使用されるべきであることは注目に値すると思います。

状況のほとんどでは、defaultofタイプを使用してoption<'a>の必要性を回避することができます。それはあなたが値がまだ利用できないという事実を表現することができます。

ただし、ここでの考え方を実証するための簡単な例です。以下のC#コード:

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

おそらく(必要不可欠な機能を使用して)F#で次のように書かれるでしょます:

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

もちろんこれはあなたの特定のシナリオに依存し、いくつかのケースでdefaultofは、あなたがすることができる唯一のものです。しかし、私はちょうどdefaultofがF#であまり頻繁に使用されていることを指摘したかっます。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top