投稿者 魔界の仮面弁士  (社会人) 投稿日時 2016/12/13 10:54:54
> 「IO.FileStream」は保存されているファイルのストリーム、
> 「IO.MemoryStream」は保存されていないストリームと考えて良いでしょうか。

間違いでは無いですが、保存されているかどうかというよりは
何に対するストリームであるかという認識の方がが良いでしょう。


標準では、他にもこのようなストリームが用意されています。

Stream → すべてのストリームの基本クラス
FileStream → ファイルをストリームとして扱う
MemoryStream → オンメモリの情報をストリームとして扱う
NetworkStream → ネットワーク通信をストリームとして扱う
UnmanagedMemoryStream → アンマネージなメモリブロック向け
CryptoStream → 暗号化/複合化処理をストリームとして扱う
GZipStream → GZip 圧縮/圧縮解除をストリームとして扱う
DeflateStream → Deflate 圧縮/圧縮解除をストリームとして扱う


この中の CryptoStream を例に挙げてみると、
Read すれば、暗号化されたデータを複合して読み出し、
Write すれば、平文データを暗号化して書き込むという、
暗号化処理を単純化するためのクラスになっています。
(どのような暗号化方式を採用するかは、別のクラスで指定します)

そしてこの CryptoStream のコンストラクタでは、第一引数として
「他の Stream」を受け取るようになっているのですが、
その相手は FileStream でも MemoryStream でも構いませんので、
ストリームが「保存されているかどうか」とは無関係なわけです。

そしてもちろん、CryptoStream に対しても Image.FromStream は利用できます。
ストリームが保存されているものであるかどうかとは関係なく。


>「Function」の前に「Private」や「Public」がありませんが、可能なのですね。
省略してしまいましたが、付与した方が丁寧ですね。


> で、スコープ(?)は何になりますか。 
Function や Sub に対して省略した場合、常に Public 扱いになります。

フィールド変数の場合は、
 Structure 直下の Dim x As Integer → Public x AS Integer の意味
 Module 直下の Dim x As Integer → Private x AS Integer の意味
 Class 直下の Dim x As Integer → Private x AS Integer の意味
のように変化します。