C#: Как передать пустой указатель функции, ожидая касательно?

Вы можете использовать collections.Counter для подсчета вхождений последних элементов:

from collections import Counter
last = Counter([i[-1] for i in a])
# Counter({7: 1, 9: 2, 12: 2})

И затем посчитать, сколько из них больше, чем 1:

sum(1 for k,v in last.items() if v>1)
# 2
33
задан sharptooth 24 September 2013 в 07:41
поделиться

4 ответа

Я предполагаю, что картирование - это структура? Если это так, вы можете иметь две версии прототипа FILES_GetMemoryMapping () с разными сигнатурами. Для второй перегрузки, в которой вы хотите передать null , задайте для параметра IntPtr и используйте IntPtr.Zero

public static extern uint FILES_GetMemoryMapping(
    [MarshalAs(UnmanagedType.LPStr)] string pPathFile,
    out ushort Size,
    [MarshalAs(UnmanagedType.LPStr)] string MapName,
    out ushort PacketSize,
    IntPtr oMapping,
    out byte PagesPerSector);

Пример вызова:

FILES_GetMemoryMapping(MapFile, out size, MapName,
   out PacketSize, IntPtr.Zero, out PagePerSector);

Если на самом деле Mapping является класс вместо структуры, просто установите значение в ноль, прежде чем передавать его вниз.

32
ответ дан sharptooth 27 November 2019 в 17:51
поделиться

Причина, по которой вы не можете передать ноль , заключается в том, что параметр ref с особой обработкой компилятором C #. Любой параметр ref должен быть ссылкой, которую можно передать функции, которую вы вызываете. Так как вы хотите передать null , компилятор отказывается разрешить это, так как вы не предоставляете ссылку, которую ожидает функция.

Ваша единственная реальная возможность - создать локальную переменную, set это к null , и передать это. Компилятор не позволит вам сделать намного больше.

31
ответ дан Andrew Hare 27 November 2019 в 17:51
поделиться

Один из способов - создать фиктивную переменную, присвоить ей значение NULL и передать ее.

10
ответ дан Erich Mirabal 27 November 2019 в 17:51
поделиться
Mapping oMapping = null;

FILES_GetMemoryMapping(MapFile, out size, MapName, out PacketSize, ref oMapping, out PagePerSector);
4
ответ дан Chris Doggett 27 November 2019 в 17:51
поделиться
Другие вопросы по тегам:

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