У меня есть небольшая проблема с потоками в Erlang NIF. Вы можете посмотреть мой код здесь: http://pastebin.com/HMCj24Jp . Проблема в том, что когда я запускаю поток, он принимает некоторые аргументы и запускает функцию generate_binary . Это нормально, но когда я пытаюсь прочитать аргументы, все вылетает.
Возможно, это не самая сложная проблема, но я не смог найти никакой документации по этому поводу, поэтому я надеюсь, что некоторые из вас могут знать ответ. параметры с помощью .NET Класс OptionalAttribute. Параметры OptionalAttribute не требуется значение по умолчанию.
Я прочитал страницу OptionalAttribute в MSDN и выполнил поиск в Интернете (где показано, что многие люди, утверждающие, что параметры OptionalAttribute не могут быть использованы C #, полагаю, эти комментарии были сделаны до C # 4?), но я не могу найти ответ на два вопроса:
Если я использую OptionalAttribute для определения параметра C # как необязательного:
Правила следующие:
объект
, Type.Missing
передается. null
. Nullable
это означает, что вы получите экземпляр Nullable
, который равен null
( HasValue
свойство вернет false
) Обратите внимание, что в случае всего, кроме параметров типа объект
, это эквивалент default (T)
.
Я был немного удивлен, поскольку спецификация C # 4.0 не указала, каким будет результат, и я ожидал, что он будет там.
Также (как указал Скотт Риппи в комментариях ), это оценивается во время компиляции, это не операция времени выполнения, что означает, что если у вас есть вызовы этого метода в других сборках которые уже развернуты, и вы измените необязательное значение, значение по умолчанию, переданное методу, не изменится , а не , если вы не скомпилируете все, что вызывает вызов метода в сборке.