Модификатор internal
Ключевое слово internal делает тип или
член видимым только в пределах одной сборки
(обычно одного проекта или DLL). Сборка -
это скомпилированная единица; другой проект,
ссылающийся на DLL, не видит internal
объявления. Для типов верхнего уровня без
модификатора по умолчанию действует именно
internal.
Синтаксис
internal class Имя { }
internal тип поле;
internal тип Метод() { }
Пример
Давайте обратимся к internal классу из
другого типа в том же файле (та же сборка):
using System;
internal class InnerStore
{
public string GetText()
{
return "12345";
}
}
class Program
{
static void Main()
{
var store = new InnerStore();
Console.WriteLine(store.GetText());
}
}
Результат выполнения кода:
"12345"
Пример
Давайте вызовем internal метод из соседнего
класса той же сборки:
using System;
class Helper
{
internal static void Show()
{
Console.WriteLine("inside");
}
}
class Program
{
static void Main()
{
Helper.Show();
}
}
Результат выполнения кода:
"inside"
Пример
Из другой сборки internal тип не виден -
во втором проекте такой код не компилируется:
// Сборка A объявляет:
internal class InnerStore { }
// Сборка B (ссылка на A):
class Client
{
static void Main()
{
var store = new InnerStore();
}
}
Компилятор не найдёт InnerStore, потому
что он доступен только внутри сборки A.
Смотрите также
-
модификатор
public,
который экспортирует тип наружу -
модификатор
protected internal,
который добавляет доступ наследникам -
модификатор
file,
который сужает видимость до одного файла -
класс
List,
который часто объявляют как public API сборки