Где применить -ErrorAction к вызову .Net?

Мне кажется, что лучший по-настоящему кросс-платформенный подход состоял бы в том, чтобы использовать объединение и протестировать битовую схему двойника для проверки NaN.

Я не полностью протестировал это решение, и может быть более эффективный способ работы с битовыми шаблонами, но я думаю, что он должен работать.

#include <stdint.h>
#include <stdio.h>

union NaN
{
    uint64_t bits;
    double num;
};

int main()
{
    //Test if a double is NaN
    double d = 0.0 / 0.0;
    union NaN n;
    n.num = d;
    if((n.bits | 0x800FFFFFFFFFFFFF) == 0xFFFFFFFFFFFFFFFF)
    {
        printf("NaN: %f", d);
    }

    return 0;
}
1
задан lit 16 January 2019 в 14:49
поделиться

2 ответа

Не думаю, что ты можешь. Если вы не хотите реализовать обратный путь в каталогах, возможно, вы застряли с чем-то вроде этого:

0
ответ дан Ansgar Wiechers 16 January 2019 в 14:49
поделиться

Полезный ответ Ансгара Вихерса показывает обходной путь с использованием Get-ChildItem , что является необходимым при использовании полной только .NET Framework (FullCLR), на котором построен Windows PowerShell .

Напротив, .NET Core v2.1 + - на котором PowerShell Core - делает [ 1115] предлагают решение:

@([System.IO.Directory]::EnumerateFiles(
  'C:\Users',
  '*.jpg', 
  [System.IO.EnumerationOptions] @{ 
    IgnoreInaccessible = $true
    RecurseSubDirectories = $true
  }
)).Count

Обратите внимание, что это эквивалент -ErrorAction Ignore, а не Continue (или SilentlyContinue, поскольку недоступные тихо игнорируются , с нет способа проверить, какие каталоги впоследствии были недоступны.

Решение основано на этой System.IO.Directory.EnumerateFiles() перегрузке , которая предлагает параметр System.IO.EnumerationOptions .

0
ответ дан mklement0 16 January 2019 в 14:49
поделиться
Другие вопросы по тегам:

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