2010-12-30 2 views
0

Я попытался следующий код в VS2010:F # Интерактивная ошибка?

open System.Security.Cryptography 

let rsaTest1 = 
    let ecKey = [|0uy..143uy|] // junk data for testing 

    let ecKeyMod = ecKey.[8..8+128-1] 
    let ecKeyExp = ecKey.[136..136+8-1] 
    let rsa = RSAParameters(Modulus = ecKeyMod, Exponent = ecKeyExp) 

    rsa 


let rsaTest2 = 
    let ecKey = [|0uy..143uy|] // junk data for testing 

    let rsa = RSAParameters(Modulus = ecKey.[8..8+128-1], Exponent = ecKey.[136..136+8-1]) 

    rsa 

Если я выделяю весь код и отправить его на F # Interactive (Alt + Enter), а затем rsaTest1 работает, но rsaTest2 выдает сообщение об ошибке,

System.NullReferenceException: Object reference not set to an instance of an object. 
    at <StartupCode$FSI_0004>[email protected]() in P:\proj\Tachograph\Project\CompuTachTest\CompuTachTest\rsaTest.fsx:line 16 

Однако, если я изменю rsaTest2 от значения в функцию и вызвать его,

let rsaTest2() = 
    let ecKey = [|0uy..143uy|] // junk data for testing 
    let rsa = RSAParameters(Modulus = ecKey.[8..8+128-1], Exponent = ecKey.[136..136+8-1]) 
    rsa 

let x = rsaTest2() 

тогда нет никакой ошибки. F # ошибка или моя ошибка?

ответ

5

Это, скорее всего, ошибка - если скомпилировать размещен фрагмент с ЛПС и запустить его, вы получите это для x64:

Unhandled Exception: System.InvalidProgramException: Common Language Runtime detected an invalid program. 
at <StartupCode$test>[email protected]() 

и это для x86:

Unhandled Exception: System.InvalidProgramException: JIT Compiler encountered an internal limitation. 
at <StartupCode$test>[email protected]() 

Вы должны сообщите об этом через Microsoft Connect.

+0

Я забыл прокомментировать, что произошло, но вот он: я сообщил об ошибке в MS, и Дон Сим подтвердил это. –

Смежные вопросы