TryParse(string s, Out object result) メソッドを実装しています。解析が失敗した場合、以前の結果がそのまま残るように、out パラメーターに触れないようにしたいと思います。しかし、VS2k8 では許可されません。何があっても out オブジェクトの値を設定する必要があります。
コンパイラを喜ばせるために、単に result = result を入れるべきですか? 何か不足していますか?
null (またはより一般的には default(T)) を割り当てます。値を割り当てる必要があります。それが「out」の意味です。
result = result
それはパラメーターであるため、あなたの提案は機能しませout
ん。最初から確実に割り当てられているわけではないため、値を割り当てるまでその値を読み取ることはできません。
result = null;
間違いなく、object
out パラメータを使用する正しい方法です。基本的default(T)
にどんなタイプでも使えT
ます。(このdefault
演算子はジェネリック メソッドで役立ちます。非ジェネリック コードの場合は、通常null
、 , 0 などを使用します。)
ref
編集: Boris からのコメントに基づいて、パラメーターとパラメーターの違いについて詳しく説明する価値があるかもしれませんout
:
出力パラメータ
参照パラメータ
result = null;
値を割り当てたくない場合は、 out の代わりに ref を使用できますが、これは呼び出し元によって初期化する必要があります。
デフォルト値を入れるだけです。たとえば、Int32.TryParse メソッドはゼロを設定します。
結果を設定するはずのコードの前に例外をスローできます。