Подтвердить что ты не робот

Какое пространство имен будет иметь класс, если не определено пространство имен

В С#, если я создаю класс без пространства имен, какое пространство имен я буду использовать при попытке создать экземпляр класса?

Например, предположим, что main...

namespace NamespaceTests
{
    class Program
    {
        static void Main(string[] args)
        {

        }
    }
}

... и предположим, что мой класс без пространства имен...

public class test
{
    public string SayHello()
    {
        return "Hello World!";
    }
}

... и предположим, что у меня есть другой класс с тем же именем, но имеющий пространство имен по умолчанию...

namespace NamespaceTests
{
    public class test
    {
        public string SayHello()
        {
            return "Hello Moon...";
        }
    }
}

... как мне изменить main, чтобы включить экземпляр класса без пространства имен и вызвать "SayHello" для получения сообщения "Hello World!"? В частности, как я мог бы полностью квалифицировать экземпляр класса без экземпляра без пространства имен, особенно учитывая, что у меня может быть другой класс, также называемый "test", но имеющий пространство имен, поэтому мне нужно различать...

4b9b3361

Ответ 2

Типы, не определенные в пространстве имен, будут находиться в глобальном пространстве имен.

Глобальное контекстуальное ключевое слово, когда оно приходит перед оператором::, ссылается на глобальное пространство имен, которое является пространством имен по умолчанию для любой программы на С# и в противном случае не называется.

В следующем примере показано, как использовать глобальное контекстное ключевое слово чтобы указать, что класс TestApp определен в глобальном пространстве имен:

C# class TestClass : global::TestApp { }