2015-11-05 41 views
6

意味の違いがの間にあるのはなぜですか?を読み込みます。(C#で)です。例を比較すると違いはありません。読み込みと読み込みの意味上の相違

  • System.IO.MemoryStream.Read()
  • System.Console.Read()
  • System.IO.StreamReader.Read()
  • System.IO.File.ReadAllText()

  • System.Xml.XmlDocument.Load()
  • VS
  • System.Xml.Linq.XDocument.Load()
  • System.Reflection.Assembly.Load()

私は単にも初期化永続ストレージと、より高いレベルの機能、相互参照およびerrorcheckからファイルを取得して多くのことを扱う私のプログラムの上に一貫性のあるネーミングをしたいので、私は親切にあなたのために頼みます入力。

答えて

5

例では、「読み取り」は、一般的に部分のを読み取ることを指します。これが所定の操作で保存および/または処理される必要のあるデータの量を制限する目的であるかどうか、またはデータそのものがただちに利用可能でない(例えば、Console.Read()またはネットワークストリームから読み取る)ため、基本的な動作は同じです。データは、処理できるデータセット全体よりも細かく処理されます。

ReadAllText()という例外があります。実際にはすべてのデータを一度に読み取ることができます。しかし、これは、同様に実行する他のすべてのメソッドでも「読み込み」という単語を使用するタイプです。このコンテキストで「読み込み」を使用すると、APIの整合性が保たれ、「読み込み」を使用しないとAPIの理解が大幅に低下することはありません(特にメソッド名に「すべてのテキスト」&hellipが明示されているので、その場合に読み込まれるテキストはすべて、そうですか?:))。

"Load"を使用する例では、すべてのデータを一度に消費し、それを他のものに変換します。 XML DOMまたはアセンブリです。これは、データを読み取るだけでなく、その上で最小限の処理(例えば、テキスト形式のデコード)を行うこととはまったく異なる種類の操作です。 「読み込み」操作とは対照的に、「読み込み」は、一度に1つの部分だけを読むというオプションを許可するのではなく、常にすべてのデータを消費します。

+0

あるこの答えは非常に簡潔で、コンパクトで読みやすい、非常に正確であるようです。私はこの決定的な要約に感謝し、これを受け入れられた答えとします。 – codingdave

3

読むAPIは約ある:

  • のみDataReaderのような入力主に前方にあるポインタを有するバイトのような小さい単位で

    • 読み取りデータ、文字
    • 接続されたソースからの読み取り
    • すべての種類のデータに対して正常に動作しますが、一定期間にわたってライブ接続が維持される場合は、コストのかかるオプションになる可能性があります。
    • プロセス全体で一貫した接続が必要です
    • ADO。ネット接続アーキテクチャは、もう一方の端に

    ロードAPIの例です:

    • ロード一度のメモリ内のすべてのデータ
    • の接続を開き、すべてを読み、それを閉じ、維持しませんライブ接続
    • データを使用してロジックを適用したり、メモリ内で前後に移動したりすることができます。
    • 小さなセットでは問題なく動作し、メモリとネットワークの要件により大きなデータセットに問題が発生する可能性があります。
    • 一度ロードされ、アーキテクチャを切断し、その切断データ
    • ADO.Netと時間をかけて都合の良い時に働きかけことができ、データセット、データテーブルとIEnumerableをは有効な例
  • 関連する問題