структуры c
Автор ЁаньчеZ задал вопрос в разделе Другие языки и технологии
Чем отличается коренным образом класс от структуры в c# и получил лучший ответ
Ответ от Голый Мужик[гуру]
class C { public int Value { get; set; } public C(int value) { Value = value; } } struct S { public int Value { get; set; } public S(int value) { Value = value; } } static void Main() { var a = new C(1); var b = a; b.Value = 2; Console.WriteLine(a.Value == b.Value); var x = new S(1); var y = x; y.Value = 2; Console.WriteLine(x.Value == y.Value); } Это раз. Второе. Память для а выделяется в динамической памяти (управляемой куче) , память для x и y - на стеке. Отличие проявляется при объявлении массивов объектов var array = new S[100] - все сто элементов будут расположены на стеке, а это работает быстрее. В связи с данной особенностью массивов структур вы не можете переопределить или скрыть конструктор без параметров (впрочем, это ограничение C#, а не .NET). Кроме того, память для экземпляров структур освободится сразу после выхода из метода, в то время как экземпляры ссылочных типов будут дожидаться сборки мусора. Третье. Конкретно в C# к структурам неприминимо наследование (хотя, опять же, сама .NET позволяет объявлять структуры, производные от структур) . Впрочем, структуры могут реализовывать интерфейсы. Четвёртое. Анонимные объекты-значения и оптимизация. S Plus(S left, S right) { new S(left.Value + right.Value); } C Plus(C left, C right) { new C(left.Value + right.Value); } var a = new C(1); var b = new C(2); var c = Plus(a, Plus(a, b)); var x = new S(1); var y = new S(2); var z = Plus(x, Plus(x, y)); Будут созданы четыре экземпляра типа C но три экземпляра типа S. Пятое. class X { public C RefObject { get; set; } } class Y { public S ValObject { get; set; } } var x = new X(); x.RefObject = new C(0); c.Value = 1 - прокатит. var y = new Y(); y.ValObject.Value = 1 - не скомпилируется. надо y.ValueObject = new S(1); Существует также понятие боксинга, забывать о котором также не следует. var n = 1; lock (n) { DoSomething(); } отработает некорректно. Вот они вам вкратце основные отличия, изложенные адекватно вашему желанию искать информацию самостоятельно. Гуглите по персоналии Эндрю Троелсена.
насколько я знаю, в struct члены класса по умолчанию public, а в class всё же private. а из книг вот эту очень уважаю, у меня она в печатном виде даж есть, кстати, там и почитай про структуры и классы побольше) <a rel="nofollow" href="http://ebook
Чтение структуры из файла C++
не пробывал раздельно данные из структуры записывать\\читать!? ? это тебе не ассемблер, где к
подробнее...
C++: оператор SWITCH-CASE
>а можно ли одному CASE задать диапазон чисел
нет, только если знать значения, которые
подробнее...
Передача структуры в функцию (CИ)
Структуру надо определять вовне, иначе только майн (или та функция в которой) её поймёт
подробнее...
Что такое Enum, C++
Вообще это пользовательский тип данных типа классов и структур. Но адаптирован под хранение
подробнее...
CH2=C(CH3)-CH=CH2+H2O что из этого получается? (это гидратация изопрена)
СH2=C(CH3)-CH=CH3+2H2O-->CH3-(CH3)COH-CHOH-CH3
подробнее...
Язык С++. Чем отличаются структуры от классов?
И я всё же скажу, что структура это статика, это просто набор данных объединённых общим свойством.
подробнее...
C++. Типы данных. Создание типа данных.
Минимальная граница для адресации процессора - 1 байт. Рекоммендуемая - 4 байта.
Если нужна
подробнее...
C++ Visual Studio 2010 Express
Строчка необходима, чтобы приостановить работу программы. Программа ждёт пока пользователь прочтёт
подробнее...
Как записать структуру в файл c++ builder
гавно? а билдер на этом гавне и работает, так что копайся тогда.
Если у тебя все в стркоках и
подробнее...
посоветуйте книги или видео уроки по C++
Эффективное использование STL. Питер Нортон Скотт Мейерс
Наиболее эффективное использование
подробнее...