2016-05-23 3 views
0

Что означают следующие объявления классов?В чем разница между внутренним и открытым классом в C#?

internal class A { } 

public class B { } 

Я могу получить доступ к обоим в другом классе в другой сборке, используя ссылку сборочного, имеющего класс А и В. Какая разница во внутренних и общественных спецификаторов доступа с точки зрения класса?

+0

Вы не должны иметь доступ к классу A из другой сборки. – Blorgbeard

+1

@Blorgbeard Если он не использует 'InternalsVisibleToAttribute' – Lukazoid

+1

Да, но вы бы * подумали * он упомянул об этом в вопросе - это не то, что вы можете сделать по ошибке. – Blorgbeard

ответ

3

Внутренней доступна только в сборке он находится в.

Public доступен для любого узла, ссылающегося на один он находится в.

Если вы можете получить доступ к внутреннему классу от другого узла вы либо " InternalsVisibleTo ", или вы не ссылаетесь на класс, который, как вы думаете.

+0

Как изменить InternalsVisibleTo? –

+0

@AdityaShukla - В файле 'AssemblyInfo.cs' вы можете поместить' [сборка: InternalsVisibleTo («AssemblyB»)] 'там, чтобы сделать внутренние классы, методы и т. Д. Доступными для' AssemblyB'. Обычно это используется для целей тестирования. – Logarr

0

Внутренний означает, что он доступен только для других классов, находящихся в одной и той же сборке. Общественный означает, что он доступен для всех других классов.

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