Простое имя состоит из одиночного идентификатора.
simple-name:
identifier
Простое имя вычисляется и классифицируется следующим образом:
Если простое имя встретилось внутри блока операторов и пространство локальных определений блока или объемлющих его блоков содержит локальную переменную или параметр с данным именем, то простое имя ссылается на данную локальную переменную или параметр и классифицируется как переменная.
В противном случае происходит поиск имени в объемлющем типе T (классе, структуре или перечислении) путем поиска члена:
Если T является классом или структурой и в результате поиска члена был обнаружен один или более методов, то результатом является данная группа методов.
Если T является классом или структурой, в результате поиска члена был обнаружен экземплярный член и имя обнаружено в теле экземплярного конструктора, метода или метода доступа свойства, то результат эквивалентен доступу к члену в форме Self.E, где E - это простое имя.
В противном случае результат эквивалентен доступ к члену в форме T.E, где E – это простое имя. В этом случае возникает ошибка компиляции, если E ссылается на экземплярный член.
В противном случае производится поиск имени в объемлющих пространствах имен, начиная с пространства имен, в котором появляется простое имя и заканчивая глобальным пространством имен:
Если пространство имен содержит член с таким именем, то простое имя является ссылкой на данный член и в зависимости от члена классифицируется как пространство имен или тип.
В противном случае, если определение пространства имен импортирует другие пространства имен посредством директивы Imports и импортированные пространства имен содержат ровно один тип с данным именем, то простое имя ссылается на данный тип.
В противном случае, если определение пространства имен импортирует другие пространства имен посредством директивы Imports и импортированные пространства имен содержат более одного типа с данным именем, то простое имя допускает множественные толкования и возникает ошибка компиляции.
В противном случае простое имя является неопределенным и возникает ошибка компиляции.
См.также: