Visual Studio 2010 SDK には、SnapshotSpans と VirtualSnapshotSpans があります。MSDN によると、違いは仮想スパンには仮想スペースがあり、もう一方にはありません。
仮想空間とは正確には何ですか?
参照用: http://msdn.microsoft.com/en-us/library/microsoft.visualstudio.text.virtualsnapshotspan.aspx
Visual Studio 2010 SDK には、SnapshotSpans と VirtualSnapshotSpans があります。MSDN によると、違いは仮想スパンには仮想スペースがあり、もう一方にはありません。
仮想空間とは正確には何ですか?
参照用: http://msdn.microsoft.com/en-us/library/microsoft.visualstudio.text.virtualsnapshotspan.aspx
ここで説明を見つけることができます:
仮想スペースは、行の長さに追加されない行末の「余分な」スペースです。Visual Studio で仮想スペースを有効または無効にすることができます。仮想空間が無効になっている場合、行末で右矢印キーを押すと、キャレットが次の行の先頭に移動します。仮想空間が有効になっている場合、行末で右矢印キーを押すと、キャレットが同じ行を前方に移動します。
[ツール] → [オプション] → [テキスト エディター] → [すべての言語] → [全般] の [仮想スペースを有効にする] オプションが無効になっていても、インデントされたテキストやコードを記述するときに仮想スペースを挿入できます。
インデントされた行の最後に Enter を入力すると、Visual Studio は新しい行の先頭に仮想スペースを追加します。これらのスペースはユーザーによって入力されていないため「仮想」であり、仮想スペースの後に何かを入力しない限りファイルに保存されません。
これはキャレットの位置に影響します。インデントされた行の最後で Enter キーを押すと、CaretPosition の「BufferPosition」プロパティと「VirtualBufferPosition」プロパティが異なります。BufferPosition は新しい行の列 0 を指し、VirtualBufferPosition はキャレットが視覚的にレンダリングされる位置を指します。