C# と VB.NET の質問掲示板

わんくま同盟

ASP.NET、C++/CLI、Java 何でもどうぞ

C# と VB.NET の入門サイト


■94818 / )  Re[7]: Excelの指定範囲の内容を表形式で表示
□投稿者/ 魔界の仮面弁士 (2723回)-(2020/05/21(Thu) 21:14:36)
No94817 (temaki さん) に返信
> また、Usingって、複数のIDisposableオブジェクトを1行で書けるんですね。

MemoryStream や StringReader のインスタンスに対しては、
Dispose を呼ばなかったとしても問題ないのですけれどね。
もちろん呼んでも OK ですが。

https://docs.microsoft.com/ja-jp/dotnet/api/system.io.stringreader?view=netframework-4.5.1
|
| この型は IDisposable インターフェイスを実装しますが、実際に破棄するリソースはありません。
| つまり、Dispose() を直接呼び出したり、using (C# の場合) または Using (Visual Basic の場合) といった
| 言語構築を行ってリソースを破棄する必要はありません。
|


> 僕はUsingをネストしてしまう所でしたが、これは勉強になりました。

対象オブジェクトが 3 つ 4 つと増えると、構文的に使いにくいですけれどね。
これが C# であれば、
 using (var reader = new StringReader(tsvData))
 using (var parser = new TextFieldParser(reader))
 {
    DoAnything(parser);
 }
の構文が使えるのですが。



とはいえ今回のケースであれば、単一の Using にて、
 Using parser As New TextFieldParser(New StringReader(tsvData))
  DoAnything(parser)
 End Using
という形をとることができます。こっちの方がスマートかもしれません。
あるいは parser.Close() 派の方もおられるようで。
解決済み
返信 編集キー/


管理者用

- Child Tree -