Дублированный ответ, который вы опубликовали, ссылается на проблему.
VB.Net имеет концепцию "корневого пространства имен". Когда вы добавляете оператор пространства имен в файл кода, указанное имя объединяется с корневым пространством имен, чтобы сформировать полное пространство имен.
Итак, если в VB.Net ваше корневое пространство имен - MyRoot, а затем вы создаете класс и окружаете пространство имен MyNamespace, то полное имя класса - MyRoot.MyNamespace.ClassName. Если вы не используете оператор Namespace, то полное имя класса - MyRoot.ClassName. Другими словами, настройка корневого пространства имен вносит вклад в имя пространства имен.
В C # это не так. C # имеет «пространство имен по умолчанию». Это просто определение пространства имен, которое автоматически добавляется в новые классы при их создании. Если вы удалите объявление пространства имен, то у класса не будет пространства имен. Другими словами, настройка пространства имен по умолчанию фактически не влияет на имя пространства имен.
В C # все, что указано в объявлении пространства имен, является используемым пространством имен. Параметр пространства имен по умолчанию определяет только то, что по умолчанию вставляется в файл кода.
Возьмем эту программу VB, в которой для корневого пространства имен задано значение «TestVBConsole», а в классе нет оператора пространства имен:
Module Module1
Sub Main()
Dim tc As New TestClass
Console.WriteLine(tc.GetType().FullName)
End Sub
End Module
и этот класс
Public Class TestClass
Public aField As String = "Default"
End Class
Выход
TestVBConsole.TestClass
Та же программа на выходах C #
TestClass
Что касается вашего вопроса, я не думаю, что есть какой-либо способ изменить это поведение. Вам просто нужно помнить в C #, чтобы убедиться, что ваши объявления пространства имен верны.