Когда я должен явно указать StructLayout?

      this.tooltip = this.renderer.createElement('div');
      this.tooltipTitle.split(',').forEach((text) => {
      this.renderer.appendChild(this.tooltip, this.renderer.createText(text));
      this.renderer.appendChild(this.tooltip, this.renderer.createElement('br'));

      var img2 = document.createElement('img'); // Use DOM HTMLImageElement
      img2.src = 'image2.jpg';
      img2.alt = 'alt text';
      this.renderer.appendChild(this.tooltip,img2);
      this.renderer.appendChild(this.tooltip, this.renderer.createElement('br'));

      this.renderer.appendChild(document.body, this.tooltip);
    });

enter image description here

Другой макет enter image description here

6
задан biozinc 26 December 2008 в 16:25
поделиться

3 ответа

Внутреннее расположение управляемой структуры является недокументированным и неподдающимся обнаружению. Детали реализации как членский порядок и упаковка намеренно скрыты. С [StructLayout] атрибут, Вы вынуждаете P/Invoke marshaller наложить определенное расположение и упаковку.

То, что значение по умолчанию просто, оказывается, соответствует тому, что необходимо получить код для работы является просто несчастным случаем. Хотя не редкий. Отметьте Тип. Свойство StructLayoutAttribute.

4
ответ дан 17 December 2019 в 04:53
поделиться

Я не совсем уверен, но это может влиять на двоичную сериализацию - это могло бы выложить поля в порядке с не именованием или информацией для заказа (приводящий к меньшему файлу), но это - полная прихоть.

0
ответ дан 17 December 2019 в 04:53
поделиться

Интересный момент. Я уверен, что у меня был код, который не удался, пока я не вставил явный LayoutKind.Sequential, однако я подтвердил, что Sequential используется по умолчанию для структур даже в 1.1.

Обратите внимание, что в Справочнике VB для структуры в разделе «Примечания> Поведение> Потребление памяти» подразумевается, что вам действительно нужно указать StructLayout для подтверждения структуры памяти, но документация для StructLayoutAttribute состояния "Последовательный" используется по умолчанию для структур в компиляторах Microsoft.

1
ответ дан 17 December 2019 в 04:53
поделиться
Другие вопросы по тегам:

Похожие вопросы: