同じコード内で2つの変数を宣言することによって、このコードを少しコンパクトにすることはできますか?複数の変数を含むステートメントを使用する
using (var sr = new StringReader(content))
{
using (var xtr = new XmlTextReader(sr))
{
obj = XmlSerializer.Deserialize(xtr) as TModel;
}
}
同じコード内で2つの変数を宣言することによって、このコードを少しコンパクトにすることはできますか?複数の変数を含むステートメントを使用する
using (var sr = new StringReader(content))
{
using (var xtr = new XmlTextReader(sr))
{
obj = XmlSerializer.Deserialize(xtr) as TModel;
}
}
受け入れられた方法は、単にチェーンに文です:IDEもこのインデントをサポートすること
using (var sr = new StringReader(content))
using (var xtr = new XmlTextReader(sr))
{
obj = XmlSerializer.Deserialize(xtr) as TModel;
}
注、すなわち、それは意図的に二using
文をインデントしようとしません。
これは、相互に内のステートメントをスコープするために、または実際に何らかのチェーンにコンパイルするために、one-liner-no-bracesルールを使用しますか? – ssube
@peachykeenネストされたブロックですが、この場合、これは 'using'のセマンティクスのためにチェーンと区別がつかないと思います。そうでなければ、私はあなたがチェーンで何を意味するのか理解していません。「使用する」ためには、各リソースは独自の 'try' ...' finally'ブロックを必要とします。 –
私はこのコードと質問の間に違いがないことを知る。 –
以下は、同じタイプのインスタンスでのみ機能します。コメントありがとうございます。
このサンプルコードはMSDNからです:
using (Font font3 = new Font("Arial", 10.0f), font4 = new Font("Arial", 10.0f))
{
// Use font3 and font4.
}
これは、変数が同じタイプの場合にのみ機能します。 –
両方のオブジェクトが同じ型である場合にのみ動作するようです –
次に変数をIDisposableとして宣言して後でキャストしますか? –
'新しいXmlTextReaderクラスを()'を使用しないでください。 'XmlReader.Create()'を使用してください。 –
@JohnSaundersはなぜですか? –
.NET 2.0以降、 'new XmlTextReader()'は非推奨です。 'XmlReader.Create()'を使うことによって、ただ一つの 'XmlTextReader'クラスではなく、最も派生した' XmlReader'クラスを得ることができます。 –