говоря поверхностно одно и то же, только что по умолчанию у класса доступ private, а у структуры public, но если пойти дальше, то отличия конечно есть, вроде структуры нельзя наследовать, они не могут быть protected
В С++ почти одно и то же. Отличается только доступ по умолчанию. В C# экземпляры классов - объекты - это ссылочный тип, хранятся в куче, удаляются сборщиком мусора. struct в C# похож на struct в C++. Тип-значение. Обладает меньшими возможностями, по сравнению с классами (объектами). Все отличия перечислять не хочу, боюсь ошибиться. Отличий много. Как и для других типов-значений, для struct при необходимости автоматически создаётся объект-обёртка.
Структура - все данные public, нет методов (встройных функций), не особенно удобно... Классы - доступ к данным можно ограничивать или открывать, обширные возможности управления объектами, наследования, перегрузки операций. Короче классы - хорошо, структуры - не очень (((