Создаем портфолио за 1 месяц
К концу месяца: 4 классных проекта в вашем портфолио! Стоимость: 100$. Подробности...
1083 of 1492 menu
◀ ▶

Модификатор extern

У метода с extern нет блока с телом в C#. Для вызова из неуправляемого кода обычно добавляют DllImport с именем библиотеки. В примере ниже метод только объявлен - программа его не вызывает, чтобы не загружать нативную DLL при запуске.

Синтаксис

[DllImport("имя_библиотеки")] public static extern тип Метод(параметры);

Пример

Давайте объявим extern метод и выведем текст из Main:

using System; using System.Runtime.InteropServices; class NativeApi { [DllImport("mylib")] public static extern int Compute(int value); } class Program { static void Main() { Console.WriteLine("12345"); } }

Результат выполнения кода:

"12345"

Пример

Давайте объявим несколько extern методов в одном классе:

using System; using System.Runtime.InteropServices; static class Bridge { [DllImport("mylib")] public static extern void Init(); [DllImport("mylib")] public static extern void Close(); } class Program { static void Main() { Console.WriteLine("abcde"); } }

Результат выполнения кода:

"abcde"

Пример

Давайте сочетаем управляемый код и объявление extern:

using System; using System.Runtime.InteropServices; class App { [DllImport("mylib")] private static extern double Transform(double input); public static string GetLabel() { return "done"; } } class Program { static void Main() { Console.WriteLine(App.GetLabel()); } }

Результат выполнения кода:

"done"

Смотрите также

  • static,
    который часто сочетают с extern методом
  • typeof,
    который получает метаданные типа
  • private,
    который скрывает объявление P/Invoke
  • Object,
    корень иерархии управляемых типов
← →
↑
Мы используем cookie для работы сайта, аналитики и персонализации. Обработка данных происходит согласно Политике конфиденциальности.
принять все настроить отклонить