Насочването към времето за изпълнение означава компилиране за времето за изпълнение, което е, наред с други неща, извеждане на CIL, известен още като MSIL (за разлика от машинния код x86/x64/и т.н.).
Казването, че всичко, което не е насочено към времето за изпълнение, е „неуправляем код“, е малко фалшива дихотомия. Кодът, изпълняван на JVM например, може да се управлява, но мисля, че можем да приемем в този контекст изречението да означава „неуправляван [от CLR]“.
Би било възможно да се напише C# компилатор, който може да излъже собствен код и да не е насочен към времето за изпълнение (въпреки че вероятно ще имате нужда от някакво време за изпълнение поне за GC), и е също толкова възможно да напишете C компилатор, който изплю CIL. В този пример хипотетичният C# компилатор няма да е насочен към времето за изпълнение, но хипотетичният C компилатор ще бъде. Важното разграничение тук е отделянето на езика от неговата цел.
.NET приложение, което не е насочено към времето за изпълнение, би било противоречие. Ако не беше насочено към времето за изпълнение, нямаше да е .NET приложение.
Въпреки това може да стане по-размито с unsafe
и P/Invoke
. Когато използвате функционалност като P/Invoke
или COM взаимодействие, в крайна сметка се насочвате към времето за изпълнение и допълнително към някои други неща. Това обаче не означава, че сте спрели да се насочвате към времето за изпълнение, а просто означава, че имате допълнителни зависимости извън времето за изпълнение. Следенето на този вид неща е причината неща като CLSCompliantAttribute
съществуват.
person
Logan Capaldo
schedule
29.05.2010