c структуры



структуры 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(); } отработает некорректно. Вот они вам вкратце основные отличия, изложенные адекватно вашему желанию искать информацию самостоятельно. Гуглите по персоналии Эндрю Троелсена.

Ответ от Lindemann Лёха[эксперт]
насколько я знаю, в struct члены класса по умолчанию public, а в class всё же private. а из книг вот эту очень уважаю, у меня она в печатном виде даж есть, кстати, там и почитай про структуры и классы побольше) <a rel="nofollow" href="http://ebook

Ответ от 3 ответа[гуру]
Привет! Вот подборка тем с ответами на Ваш вопрос: Чем отличается коренным образом класс от структуры в c#
спросили в Ассемблер Структура
Чтение структуры из файла C++
не пробывал раздельно данные из структуры записывать\\читать!? ? это тебе не ассемблер, где к
подробнее...
спросили в Casio Cisco
C++: оператор SWITCH-CASE
>а можно ли одному CASE задать диапазон чисел
нет, только если знать значения, которые
подробнее...
спросили в Структура
Передача структуры в функцию (CИ)
Структуру надо определять вовне, иначе только майн (или та функция в которой) её поймёт

подробнее...

Что такое Enum, C++
Вообще это пользовательский тип данных типа классов и структур. Но адаптирован под хранение
подробнее...
Ответ от 3 ответа[гуру]
Привет! Вот еще темы с похожими вопросами:
спросили в Статика
Язык С++. Чем отличаются структуры от классов?
И я всё же скажу, что структура это статика, это просто набор данных объединённых общим свойством.
подробнее...

C++. Типы данных. Создание типа данных.
Минимальная граница для адресации процессора - 1 байт. Рекоммендуемая - 4 байта.
Если нужна
подробнее...
спросили в SATA Express
C++ Visual Studio 2010 Express
Строчка необходима, чтобы приостановить работу программы. Программа ждёт пока пользователь прочтёт
подробнее...
спросили в Lines
Как записать структуру в файл c++ builder
гавно? а билдер на этом гавне и работает, так что копайся тогда.
Если у тебя все в стркоках и
подробнее...

посоветуйте книги или видео уроки по C++
Эффективное использование STL. Питер Нортон Скотт Мейерс
Наиболее эффективное использование
подробнее...
Структура язык Си на Википедии
Посмотрите статью на википедии про Структура язык Си
Суперсерии хоккей на Википедии
Посмотрите статью на википедии про Суперсерии хоккей
 

Ответить на вопрос:

Имя*

E-mail:*

Текст ответа:*
Проверочный код(введите 22):*