2016-03-15 3 views
-5

Я уже давно не занимаюсь программированием, но время от времени я пишу приложение с Visual Studio.это 2016, почему я все еще должен использовать P/Invoke?

Мой вопрос, поскольку .NET был с нами в течение 13 лет, почему я должен когда-либо должны использовать родной API ака P/Invoke? Почему не все было преобразовано в официальные сборки .NET?

Совсем недавно я столкнулся с ситуацией, когда я просто хочу включить и отключить Wi-Fi-соединение без использования мыши. Клавиатура всегда быстрее (для меня), но для нее нет обычного сочетания клавиш Windows. Настолько замечательная, очень простая программа C# для меня, чтобы писать. Представьте мое удивление, когда я обнаружил, что мне придется окунуться в родной API. Я помню, что мне нужно было сделать это в первые дни .NET. Конечно, новой технологии нужно несколько лет, чтобы наверстать упущенное, верно? Ну, теперь это 2016.

Я полагаю, я просто не вижу большую картину. Кто-то, пожалуйста, осветите меня.

+1

Потому что есть также неуправляемые языки, такие как C/C++? – HimBromBeere

+3

Поскольку Windows не написана в .NET. Очень просто. Он написан в основном на C/C++. – xanatos

+0

Я не понимаю, почему неуправляемые языки имеют какое-либо отношение к тому, что включено в .NET. Приведите пример. – tom

ответ

4

Потому что это не проблема .NET была создана для решения. В самом деле, можно с легкостью утверждать, что с появлением кросс-платформенного .NET Core мы будем еще дальше от этого видения.

Windows API все еще жив и здоров, а под капотом способ Windows запрограммирован. Благодаря этому API управляется всем, связанным с реализацией Windows. Для библиотек .NET, чтобы дублировать каждый вызов API, этот набор библиотек должен был бы стать довольно большим, и ему пришлось бы абстрагироваться от многих других концепций низкого уровня, чем сейчас.

Каждая программа, которую вы используете, включая .NET CLR, использует Windows API для работы в Windows.