Хорошо, это прослушивает меня. Я знаю, что я его где-то читал, а google не помогает.
Каков уровень доступности метода, который не указывает модификатор доступа?
void Foo()
{
//code
}
Я хочу сказать internal, но я не уверен на 100%.
Хорошо, это прослушивает меня. Я знаю, что я его где-то читал, а google не помогает.
Каков уровень доступности метода, который не указывает модификатор доступа?
void Foo()
{
//code
}
Я хочу сказать internal, но я не уверен на 100%.
Доступность по умолчанию для типа internal, но доступность по умолчанию этого типа членов зависит от типа.
В общем случае членами класса являются private по умолчанию, где по умолчанию члены struct public. Это зависит от языка; общедоступные модификаторы доступа по умолчанию для С++ являются общедоступными, а С# - частными.
Предполагая, что это метод С#, так как у вас есть тег ".net".
Люди должны различать доступность "член" и "класс".
Да, internal является стандартным для классов, но private является значением по умолчанию для членов.
Для класса: Internal является значением по умолчанию, если не указан модификатор доступа.
Для метода: Private является значением по умолчанию, если не указан модификатор доступа.
Из языка программирования С#, третье издание Андерса Хейлсберга и др., раздел 10.3.5 ( "Члены класса - модификаторы доступа" ) на стр. 434:
Объявление класса-члена может иметь любой из пяти возможных видов объявленной доступности (§3.5.1):
public,protected internal,protected,internalилиprivate. За исключением комбинацииprotected internal, это ошибка времени компиляции, чтобы указать более одного модификатора доступа. Если объявление класса не содержит модификаторов доступа, предполагаетсяprivate. [Акцент мой]
И затем в разделе 11.2 ( "Элементы Struct" ) на стр. 539:
За исключением различий, отмеченных в п. 11.3, описания членов класса, приведенные в пп. 10.3 - § 10.14, также применяются к членам структуры.
В разделе 11.3 ничего не говорится о модификаторах доступа, поэтому мое чтение этого означает, что члены struct без модификатора доступа также по умолчанию private. Это соответствует
Ой, подождите, еще одна вещь....
interface объявления метода, конечно, public по определению. Таким образом, следующая реализация public, без явного модификатора доступа.
public class MyClass : IEqualityComparer<MyClass>
bool IEqualityComparer<MyClass>.Equals(MyClass x , MyClass y) {}
}
Методы класса закрыты и закрыты по умолчанию в .NET. Это означает, что метод доступен только внутри класса и не может быть переопределен унаследованным классом.
надеюсь, что это прояснит все по скриншоту непосредственно из MSDN