У меня есть следующий F # код:Как перевести строку в F #?
//Array iter version
let toSecureString (s:string) =
let sString = new SecureString()
s |> Array.iter (fun cl -> sString.AppendChar cl)
sString
Я пытаюсь преобразовать строку в .Net .Net SecureString. Когда я пытаюсь скомпилировать я получаю ошибку типа несовпадение:
stdin(60,10): error FS0001: Type mismatch. Expecting a
string -> 'a
but given a
'b [] -> unit
The type 'string' does not match the type ''a []'
Если я не указать тип с, это тип подписи я вижу:
val toSecureString : char [] -> SecureString
Но поскольку я не» t нужно, чтобы каждый раз вручную создавать массив символов для аргумента, кажется, что я что-то упускаю. Как я могу заставить этот код работать с передаваемым параметром строки?
Если это имеет значение, я тестирую F # 2.0 (Build 4.0.40219.1).
Любые подсказки приветствуются. Если это уже было задано и ответили, напишите ссылку в комментариях, и я закрою этот вопрос.
Почему вы используете 'SecureString' вообще? Если у вас уже есть строка, то копирование ее на «SecureString» не добавит никакой безопасности, я думаю. Вероятно, поэтому нет 'AppendString()'. – svick
Я использую SecureString, потому что для Windows API требуется SecureString. –
Ничего себе, ребята, три отличных ответа. Хотел бы я выбрать все из них в качестве «принятого ответа» –