2013-02-17 1 views
6
public class TestClass 
{ 
    protected internal int FieldA; 
    internal protected int FieldB;  
} 

Есть ли разница между защищенными внутренними и внутренними протонными членами?Есть ли разница между защищенной внутренней и внутренней защитой?

+5

Нет, нет. Однако, не попадайте в ловушку, не понимая, что это означает 'protected || internal'. Это не означает 'protected && internal'. –

ответ

7

Есть ли разница между защищенными внутренними и внутренними протонными Участниками?

Между ними нет никакой разницы.

protected internal средства protected OR internal.

internal protected средства internal OR protected.

Тип или элемент может быть доступен любым кодом в сборке в котором она объявлена, или внутри производного класса в другой сборки. Доступ из другой сборки должен выполняться в объявлении класса , которое происходит из класса, в котором объявлен внутренний элемент защищенного , и он должен проходить через экземпляр типа производного класса.

protected internal commanly б/у. Существует никаких объяснений относительно internal protected в MSDN страница.

Также проверьте Фил Хаак прохладно блоге What Does Protected Internal Mean?

+0

'внутренний' ИЛИ' внутренний'? –

+0

@SimonWhitehead Исправлено, спасибо. –

2

Нет, без разницы. Вы можете объявить их в любом порядке. Так же, как вы можете объявить static до или после модификатора доступа.

Единственная реальная разница должна заключаться в том, что вы и ваша команда решаете. Как правило, вы должны придерживаться одного стиля, чтобы избежать путаницы или предположений, или, по крайней мере, сделать это согласованным при чтении.

EDIT: Хотя, теперь, когда я думаю об этом, я не помню часто видя "internal protected". На MSDN page for access modifiers он перечисляет его как "protected internal", поэтому, возможно, придерживайтесь этого, поскольку его можно считать «более стандартным».

1

Нет, нет.

Оба варианта определяют элемент, доступный из той же сборки И из классов потомков.

+0

Вы имеете в виду «ИЛИ»? –

+0

В этом конкретном случае оба значения «и» и «или» будут иметь то же значение. –

1

это операция поразрядного с логическим «ИЛИ» => Внутренняя: из той же сборки. protected: из производного класса. «protected AND internal» не имеет смысла :-)