private unsafe MemoryBlock GetNonVirtualStringMemoryBlock(StringHandle handle) { Debug.Assert(handle.StringKind != StringKind.Virtual); int bytesRead; char otherTerminator = handle.StringKind == StringKind.DotTerminated ? '.' : '\0'; int offset = handle.GetHeapOffset(); int length = Block.GetUtf8NullTerminatedLength(offset, out bytesRead, otherTerminator); return(new MemoryBlock(Block.Pointer + offset, length)); }