2011-06-28 58 views

回答

15

它存儲在一個領域對象內。

碰巧,串空值終止在當前實現.NET的內部,但這只是互操作的緣故,使代碼期望空值終止字符串可以給予相同的大量的記憶與工作。

請注意,無論如何,將它放在字段中對於性能來說是一個好主意 - 它使得查找長度爲O(1)操作而不是O(N)。

+1

隨機歷史存在:C約定在很大程度上是一種方便,因此您可以直接將指針傳遞給字符串,而不必擔心包含長度的結構(這也意味着在修改緩衝區時保持長度同步)。一些Pascal實現(例如Delphi)採用了一種稍微黑客的方法,並將字符串長度存儲在*(ptr-4)位置;如果您手動修改了緩衝區,那麼更新它就是您的工作。由於.NET字符串是不可變的,這很好地支持同步問題(只要你不會粗暴地戳回後面的內存)。 –

+1

可能值得一提的是:_current implementation_存儲它...... –

+0

@亨克:完成,謝謝。 –