Судя по всему, у тебя очень слабо с синтаксисом C++. В C++ есть два важных термина:
объявление(declaration) и
определение(definition).
При объявлении сущности достаточно указать только ее внешний вид и опустить детали внутренних свойств.
Определение сущности подчиняется ODR (
One Definition Rule) - правилу одного определения.
One Definition Rule гарантирует нам детерминизм любого используемого в коде типа, любой функции, любой переменной в рамках одной области видимости (но не в разных).
Это правило позволяет сказать, что свойства программы однозначно определены до процесса трансляции и не изменяются после него.
К примеру есть файл .cpp, в нем есть метод, который не относится не к какому пространству
Это не метод. Это глобальная функция. Она объявлена в глобальном пространстве конкретного модуля трансляции. Это просто объявление чтобы функцией можно было пользоваться не нарушая ODR.
Есть класс, он описан и тд, но я заметил в нем есть "вызова" методов, без всякого описания, то есть даже значения не передаются
Класс не описан, а определен. И снова, там не методы, а статические функции. Статические функции не описаны, а объявлены. И они не без описания, а без определения по месту.
А далее ты уже видишь определение статический функций в конкретном модуле трансляции.
Как тебе быть для переноса этого добра в C#? Постарайся понять логику и выразить ее в терминах C#. :)
Статические функции тебе и там тоже доступны. Но у тебя в C# нет разделения на объявление и определение.