在Visual Studio 2010 SDK中有SnapshotSpans和VirtualSnapshotSpans。根據MSDN,不同之處在於虛擬跨度有虛擬空間,另一個不是。什麼是Visual Studio SDK中的VirtualSnapshotSpan中的虛擬空間
什麼是虛擬空間?
參考: http://msdn.microsoft.com/en-us/library/microsoft.visualstudio.text.virtualsnapshotspan.aspx
在Visual Studio 2010 SDK中有SnapshotSpans和VirtualSnapshotSpans。根據MSDN,不同之處在於虛擬跨度有虛擬空間,另一個不是。什麼是Visual Studio SDK中的VirtualSnapshotSpan中的虛擬空間
什麼是虛擬空間?
參考: http://msdn.microsoft.com/en-us/library/microsoft.visualstudio.text.virtualsnapshotspan.aspx
您可以在這裏找到一個解釋:
虛擬空間是在一行的末尾不加 以「額外」空間線的長度。您可以在 Visual Studio中啓用或禁用虛擬空間。當禁用虛擬空間時,按下行末尾的方向鍵 會使插入符號移至下一行開頭的 。啓用虛擬空間時,在線條末尾的右箭頭鍵上按 將使插入符號在同一行上向前移動 。
即使在工具 - >選項 - >文本編輯器 - >所有語言 - >常規下的選項「啓用虛擬空間」被禁用,虛擬空間可以在寫入縮進文本或代碼時插入。
如果在縮進行的末尾鍵入enter,Visual Studio將在新行的開頭添加虛擬空格。這些空間是「虛擬的」,因爲它們沒有被用戶輸入,並且除非在虛擬空間之後輸入內容,否則不會保存在文件中。
這會影響插入符號的位置: 在按下Enter按鈕後,「BufferPosition」 - 和「VirtualBufferPosition」 - CaretPosition屬性將會不同。 BufferPosition指向新行中的第0列,VirtualBufferPosition指向插入視覺呈現的位置。
迷人。因此,如果我要查看原始文件並關閉虛擬間距,並在該行後面留出很多空格,則文件將保留文件中的字節,如果虛擬文件是一個文件,則會簡單地刪除它們(使文件變小)。有點像有意義的數字?然而,如果你有虛擬空間,按右箭頭10次,然後說一個評論標籤,它會保留空間(將它從虛擬空間轉換爲真實空間)? 非常感謝順便說一句! – Chris 2012-08-03 16:22:23