私は既存しているコード:新しいパターンマッチ構文は既存の変数と連動できますか?
internal bool firstAsSymbol(out Symbol s)
{
return (s = first as Symbol) != null;
}
私は新しいis
構文を使用することができますが、私は、ローカル変数を導入する必要があります。
internal bool firstAsSymbol(out Symbol s)
{
var result = first is Symbol sym;
s = sym;
return result;
}
EDITを:実際には、上記のコードはコンパイルされません! sym
は、s = sym;
行では不定になることがあります。したがって、さらに悪いことです:if
ステートメントを使用して、then節とelse節の両方にs
を割り当てる必要があります。 (sym
を正しい句で触れることができるようにしようとしています)。
(もちろん、元のコード以外の)簡単な代替方法はありますか?
なぜあなたは最初の方法でメソッドを持っていますか?どのように役立つのですか? – musefan
コードはもともと呼び出し元サイトでのキャストを避けるために作成されたので、キャストされた値を返す必要があります。 –
これは、呼び出しコードの複雑さを減らすための良いリファクタリングパターンです。これはメソッドとして間違っていません。 –