Я любительский программист C#, и у меня есть старший коллега, который также кодирует в C#, но его стиль кодирования C# очень похож на C. В C у вас есть код, который действует как данные (struct) и код, который обеспечивает функциональность, используя данные. В C# эта граница размазывается там, где у вас есть типы, которые хранят данные и обеспечивают функциональность, но иногда, когда код прост, вы все равно получаете некоторые типы, которые содержат только данные. < /P>
Теперь, когда Мой коллега предлагает тип, который изначально содержит только данные, он автоматически объявляет его как структуру. Даже в тех случаях, когда я бы объявил это классом (потому что меня учили объявлять класс как класс, если у меня нет веской причины не для этого). Пример, чтобы нарисовать изображение: < /p>
struct Person
{
public string name;
public int age;
public string occupation;
}
< /code>
Теперь это становится очень сложно, когда нам нужно сотрудничать, потому что он привык к типам, которые ведут себя как типы ценностей, поэтому мы попадаем в аргументы, а иногда я не знаю, как опровергнуть то, что он говорит . < /p>
Мой вопрос: каковы недостатки, когда тип объявляется как структура, когда он должен быть классом? < /p>
Я понимаю значение Типы и ссылки ведут себя по -разному, Я понимаю, что рамки стека живут в стеке, и данные этого экземпляра класса живут на куче и все это. Но кажется, что есть лучшая причина, по которой мы редко используем структуры, чем просто «используйте структуры, когда вы хотите семантику ценности». < /P>
Мне интересно узнать некоторые более глубокие проблемы. Я помню, как читал некоторое время назад кое -что относительно того факта, что процессор может приносить только определенную часть данных за раз, поэтому с большими структурами возникают проблемы, но я не очень просвещен в этом, поэтому мне интересно узнать больше .
Спасибо за совет и рекомендации.
Подробнее здесь: https://stackoverflow.com/questions/794 ... -drawbacks