Модераторы: diadiavova, gambit

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> В чем разница между VB.NET и С#.NET? 
:(
    Опции темы
AlexLd
Дата 7.2.2007, 21:56 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 27
Регистрация: 1.2.2007

Репутация: нет
Всего: нет



Привет всем!
В дальнейшем, я хотел перейти на C#.NET с VB.NET!
Чего я найду нового? и чем C# лучше?

PM MAIL   Вверх
bom
Дата 8.2.2007, 00:27 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 329
Регистрация: 22.2.2004
Где: Казахстан, Алматы

Репутация: нет
Всего: 6



Другой синтаксис.
Ничем.
PM MAIL   Вверх
Naum
Дата 8.2.2007, 10:43 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 743
Регистрация: 7.9.2005
Где: Саратов, ул. Поса дского, 298

Репутация: 2
Всего: 15





--------------------
У нас всего два праздника Новый год и ТЯПница.
PM MAIL ICQ   Вверх
Exception
Дата 19.2.2007, 19:22 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Участник Клуба
Сообщений: 4525
Регистрация: 26.12.2004

Репутация: 18
Всего: 186



Пописав на C# три месяца, понял, что он удобнее smile .
PM   Вверх
unicuum
Дата 11.3.2007, 22:29 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 830
Регистрация: 16.3.2005
Где: Рашка

Репутация: нет
Всего: 8



Цитата(AlexLd @  7.2.2007,  21:56 Найти цитируемый пост)
В дальнейшем, я хотел перейти на C#.NET с VB.NET!
Чего я найду нового? и чем C# лучше?

Ничем он не лучше, это дело так сказать вкуса. А найдёшь ты различия, одно и то же ключевое слово будет значить совершенно другое. Между прочим если сравнивать с C++, картина абсолютна та же. Кое-чего у тебя в C# не будет, например, выборочные параметры (optional) или статических переменных (static), а кое-что добавится, ну например те же выходные параметры (out) и так далее

Если говорить о конкретных различиях, то нужно учитывать версии 7.0, 7.1, 8.0. Вот, например макросы пишутся на VB.NET. В простых случаях это удобно для воздействия на события VS.NET или просто выполнения какой-нибудь команды вызванной пользователем.

В общем, за исключением синтаксиса ничего нового нет. Главное же это сила привычки, пиши хоть на чём, лишь бы программы в итоге получались. С точки зрения функциональности языки .NET эквиваленты, да и не может быть иначе, ведь они создавались по одним и тем же правилам.



--------------------
user posted image
обычный день на винграде
PM   Вверх
agl
Дата 12.3.2007, 19:00 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 65
Регистрация: 25.6.2006

Репутация: нет
Всего: 3



Цитата
Кое-чего у тебя в C# не будет, например, ... статических переменных (static)


В С# есть статик  smile 
PM   Вверх
Exception
Дата 12.3.2007, 20:02 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Участник Клуба
Сообщений: 4525
Регистрация: 26.12.2004

Репутация: 18
Всего: 186



Цитата(agl @  12.3.2007,  20:00 Найти цитируемый пост)
В С# есть статик 


Он говорит о static-переменных, а не полях. Впрочем, они всё равно бесполезны.. smile
PM   Вверх
agl
Дата 13.3.2007, 00:03 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 65
Регистрация: 25.6.2006

Репутация: нет
Всего: 3



Не в службу, а в дружбу - что значит статик-переменные в вашем понимании? Или я чего-то непонимаю, или вы ошибаетесь.
Пример статик переменной в С#
Код

static public int var;


??

Это сообщение отредактировал(а) agl - 13.3.2007, 00:03
PM   Вверх
skyboy
Дата 13.3.2007, 01:07 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


неОпытный
****


Профиль
Группа: Модератор
Сообщений: 9820
Регистрация: 18.5.2006
Где: Днепропетровск

Репутация: нет
Всего: 260



agl, ты привел пример static-поля. В смысле - поле класса.
А static-переменная объявляется вне принадлежности к классу. Static - в этом случае - определяет область видимости. Для static, если я не ошибаюсь, возможно существование вне функций. в том числе, вне main. ну, вроде глобальной переменной для модуля.

Добавлено @ 01:18 
нашел здесь:
Цитата

Если значение локального объекта должно сохраняться между вызовами функции, то обычный автоматический объект не подойдет: ведь его значение теряется каждый раз после выхода.
В таком случае локальный объект необходимо объявить как static (со статической продолжительностью хранения). Хотя значение такого объекта сохраняется между вызовами функции, в которой он определен, видимость его имени ограничена локальной областью. Статический локальный объект инициализируется во время первого выполнения инструкции, где он объявлен.

PM MAIL   Вверх
unicuum
  Дата 15.3.2007, 08:19 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 830
Регистрация: 16.3.2005
Где: Рашка

Репутация: нет
Всего: 8



Цитата(agl @  13.3.2007,  00:03 Найти цитируемый пост)
Не в службу, а в дружбу - что значит статик-переменные в вашем понимании? Или я чего-то непонимаю, или вы ошибаетесь.
Пример статик переменной в С#
Выделить всёкод C#
1:
    
static public int var;

??

В программировании существует такое понятие как область видимости (scope). В Visual Basic.NET она делится следующим образом, хотя тут даже уместнее применить слово вкладывается.
  • Namespace scope – доступна во всём коде в пространстве имён в котором объявлена
  • Module scope – доступна во всём коде внутри модуля, класса, или структуры в котором объявлена
  • Procedure scope – доступна во всём коде внутри процедуры в которой объявлена
  • Block scope – доступна только внутри кодового блока в котором объявлена

Так вот в типах определяемых пользователям можно вводить элементы, для класса это поля, свойства, методы, события. Все они находятся в области видимости Module. В данном случае мы имеем поле var относящееся к самому типу, но не к его образцу, образец (экземпляр) кстати, называют объектом, а класс или структура от которого он реализован – шаблоном объекта.

Поле – это переменная находящаяся на уровне модуля, свойство – переменная находящаяся на уровне модуля с методом проверки значений, метод – функция или процедура находящиеся на уровне модуля, но... Но помимо этого есть ещё такое понятие как локальная переменная. Локальные переменные обитают на уровне процедур и блоков.

Код

Function updateSales(ByVal thisSale As Decimal) As Decimal
    Static totalSales As Decimal = 0
    totalSales += thisSale
    Return totalSales
End Function

Из стандартного примера видно, как объявляется переменная на уровне процедуры (прим. если бы внутри процедуры существовала инструкция, и переменная объявлялась в её блоке, то она соответственно был бы на уровне блоков). В данном случае она ещё и инициализируется значением 0. Когда после запуска программы эта функция вызовется первый раз, произойдёт инициализация в 0, но при последующих вызовах эта инициализация будет игнорироваться, и в итоге мы будем получать всё большее и большее значение.

Думаю, принцип ясен, а уж как его использовать и использовать ли вообще дело каждого программиста. Стоит отметить, что в C++ такая же возможность существует издревле и используется то же самое ключевое слово - static.



--------------------
user posted image
обычный день на винграде
PM   Вверх
Exception
Дата 18.3.2007, 20:12 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Участник Клуба
Сообщений: 4525
Регистрация: 26.12.2004

Репутация: 18
Всего: 186



http://msdn2.microsoft.com/en-us/library/z2cty7t8.aspx

Думаю, больше вопросов не будет smile .
PM   Вверх
Kirill89
Дата 10.4.2007, 12:24 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 501
Регистрация: 17.10.2006
Где: Питер

Репутация: нет
Всего: 4



Я кстати тоже непонял смысла от этого vb.net, в шестой версии была простота языка, оправдывающая название BASIC. Net технология перешла на абсолютно Си подобные алгоритмы и средства. Я даже начал подумыавть над забавной программкой для переделки vb кода на C# smile
И тоже, когда поджали обстаятельства, перешел именно на vb.net и C#. Сейчас их параллельно учу и начинаю думать, что хватает одной книги что-бы понять оба языка  smile 


--------------------
PM MAIL WWW   Вверх
Exception
Дата 10.4.2007, 12:42 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Участник Клуба
Сообщений: 4525
Регистрация: 26.12.2004

Репутация: 18
Всего: 186



Цитата(Kirill89 @  10.4.2007,  13:24 Найти цитируемый пост)
в шестой версии была простота языка, оправдывающая название BASIC


Простите, но язык был абсолютно дурацким. От него очень трудно отучаться, и он обычно прививает самые худшие практики программирования.


Цитата(Kirill89 @  10.4.2007,  13:24 Найти цитируемый пост)
Net технология перешла на абсолютно Си подобные алгоритмы и средства


Не понял вообще. Почему си-подобные?


Цитата(Kirill89 @  10.4.2007,  13:24 Найти цитируемый пост)
Я даже начал подумыавть над забавной программкой для переделки vb кода на c#


Такие уже есть smile .

То, что языки стали похожи, лишь значит. что VB продвинулся далеко-о-о вперёд, и то, что людям, привыкшим работатьс ущербным VB 6, трудно на него перейти -- вовсе не критерий неудачности языка. То, что языки похожи, это преимущество, так как проще работать в команде и понимать друг друга.

Это сообщение отредактировал(а) Exception - 10.4.2007, 12:43
PM   Вверх
Kirill89
Дата 10.4.2007, 13:47 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 501
Регистрация: 17.10.2006
Где: Питер

Репутация: нет
Всего: 4



Exception, вот скажите мне, vb.net теперь действительно равняется с другими языками ООП?
Он чем нибудь уступает языку Си например?
Если нет, то это всё меня очень радует, признаться мне никогда, не нравился синтакис Си...
А как же динамические массивы? В 6.0 они использовались для простоты, но занимали кучу памяти и ресурсов. Они ведь остались? Значит язык всё-равно не является серьёзным?


--------------------
PM MAIL WWW   Вверх
ivashkanet
Дата 10.4.2007, 14:21 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Кодю потиху
****


Профиль
Группа: Участник Клуба
Сообщений: 3684
Регистрация: 23.2.2006
Где: Гомель, Беларусь

Репутация: 5
Всего: 149



Цитата(Kirill89 @  10.4.2007,  12:47 Найти цитируемый пост)
вот скажите мне, vb.net теперь действительно равняется с другими языками ООП?

Да, полностью объектно-ориентированный язык.
Цитата(Kirill89 @  10.4.2007,  12:47 Найти цитируемый пост)
А как же динамические массивы? В 6.0 они использовались для простоты, но занимали кучу памяти и ресурсов. Они ведь остались? Значит язык всё-равно не является серьёзным? 

Хочешь используй их, хочешь нет (я, например, ниразу не использовал. Да и массиву предпочитаю коллекцию (Array(of Type)))

PM MAIL WWW ICQ   Вверх
Exception
Дата 10.4.2007, 14:35 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Участник Клуба
Сообщений: 4525
Регистрация: 26.12.2004

Репутация: 18
Всего: 186



Цитата(Kirill89 @  10.4.2007,  14:47 Найти цитируемый пост)
А как же динамические массивы? В 6.0 они использовались для простоты, но занимали кучу памяти и ресурсов. Они ведь остались? Значит язык всё-равно не является серьёзным? 


Не понял. Массивы -- они и в C++ и в C# есть и именно в том виде, в котором они есть в VB .NET smile . А вот как раз в VB 6 их не было в нормальном виде. То бишь, вместо создания нормального массива, мы почему-то давали контролам одинаковые имена и меняли свойство Index.

Добавлено через 1 минуту
Цитата(ivashkanet @  10.4.2007,  15:21 Найти цитируемый пост)
Хочешь используй их, хочешь нет (я, например, ниразу не использовал. Да и массиву предпочитаю коллекцию (Array(of Type)))


Почему же, массивы элементов бывают весьма полезны.

Добавлено через 2 минуты и 41 секунду
И в VB .NET / C# массивы элементов управления не занимают кучу места и ресурсов smile . Массив из 3 элементов управления занимает ровно столько же места, сколько и три разрозненных элемента управления smile . В массиве же хранятся ссылки на эти элементы, а не сами элементы.
PM   Вверх
Kirill89
Дата 10.4.2007, 14:49 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 501
Регистрация: 17.10.2006
Где: Питер

Репутация: нет
Всего: 4



Exception, Нет, очевидно мы непоняли друг друга
Код

Dim a() as byte
Redim a(10) as byte

Это в С++ неиспользуется из-зи экономии ресурсов.
Там есть массив в куче - vector, но он не является полноценным динамическим массивом, в моём понимании этого термина.


--------------------
PM MAIL WWW   Вверх
HappyLife
Дата 10.4.2007, 15:13 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 642
Регистрация: 17.5.2006

Репутация: нет
Всего: 8



Kirill89, 
Он являеться полноценным динамическим массивом. В полном смысле этого слова. Также ему на помощь имеются map, list.
 Ты расскажи, что вектор делать не умеет.

PM MAIL   Вверх
Exception
Дата 10.4.2007, 15:18 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Участник Клуба
Сообщений: 4525
Регистрация: 26.12.2004

Репутация: 18
Всего: 186



Цитата(Kirill89 @  10.4.2007,  15:49 Найти цитируемый пост)
Dim a() as byte
Redim a(10) as byte


Кстати, в VB .NET это тоже не используется. Ну то есть конечно их можно использовать, но остались они только для хоть какой-нибудь совместимости с VB 6. Никто не вынуждает тебя пользоваться этой ерундой, когда есть такие удобные классы как List (Of T) и прочая, прочая.

Добавлено через 1 минуту и 8 секунд
Кстати, если не ошибаюсь, List (Of T) - это аналог vector<T>.
PM   Вверх
ivashkanet
Дата 10.4.2007, 15:28 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Кодю потиху
****


Профиль
Группа: Участник Клуба
Сообщений: 3684
Регистрация: 23.2.2006
Где: Гомель, Беларусь

Репутация: 5
Всего: 149



Цитата(Exception @  10.4.2007,  13:35 Найти цитируемый пост)
Почему же, массивы элементов бывают весьма полезны.

А я не говорю, что они неполезны (боже упаси меня от такой ереси) smile 
Я говорил про динамические массивы 
Цитата(Kirill89 @  10.4.2007,  13:49 Найти цитируемый пост)
Redim a(10) as byte

Которые, кстати, декомпилируются в "создание большего массива" + "копирование всех элементов из старого массива в новый"
PM MAIL WWW ICQ   Вверх
Exception
Дата 10.4.2007, 15:33 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Участник Клуба
Сообщений: 4525
Регистрация: 26.12.2004

Репутация: 18
Всего: 186



Угу, жуткая ересь. Очень полезно бывает почитать отрефлекторенный код.
PM   Вверх
Kirill89
Дата 10.4.2007, 20:51 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 501
Регистрация: 17.10.2006
Где: Питер

Репутация: нет
Всего: 4



Цитата(ivashkanet @  10.4.2007,  15:28 Найти цитируемый пост)
Которые, кстати, декомпилируются в "создание большего массива" + "копирование всех элементов из старого массива в новый" 

Серьёзно?! Я всегда считал, что просто сдвигается адрес первой и последней ячейки памяти  smile 
Тогда ясно почему он кушает ресурсы...
Цитата(Exception @  10.4.2007,  15:18 Найти цитируемый пост)
Кстати, если не ошибаюсь, List (Of T) - это аналог vector<T>. 

Несовсем... Вектор хранит только адреса памяти и позволяет делать обход по ним только без указания индекса. Тоесть по этому массиву можно пробежаться только от конца к началу или наоборот. А лист, если я не ошибаюсь, хранит конкретные значения и позволяте обратиться к ним по индексу.


--------------------
PM MAIL WWW   Вверх
Exception
Дата 10.4.2007, 22:36 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Участник Клуба
Сообщений: 4525
Регистрация: 26.12.2004

Репутация: 18
Всего: 186



Цитата(Kirill89 @  10.4.2007,  21:51 Найти цитируемый пост)
А лист, если я не ошибаюсь, хранит конкретные значения и позволяте обратиться к ним по индексу. 


Конкретные значения для ссылочных типов бывают только в куче и нигде больше smile !
Во всех переменных всегда хранятся ссылки! И в списке тоже хранятся ссылки, если конечно, это не List (Of Integer) -- тут ты, безусловно, прав.
Нет, по индексу к элементы списка не обратишься, хотя средствами LINQ это и реализуется.
Туплю, можно.

Это сообщение отредактировал(а) Exception - 10.4.2007, 22:37
PM   Вверх
Kirill89
Дата 11.4.2007, 21:45 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 501
Регистрация: 17.10.2006
Где: Питер

Репутация: нет
Всего: 4



Exception, ну я небыл уверен, потому, что в большенстве своем пользовался векторм, он позволяет легко лепить такие чудесные вещи как отмена любого колличества действий (как в MS Office) smile
А лист имеет табличную систему, из чего и следет индекс...
Цитата(Exception @  10.4.2007,  22:36 Найти цитируемый пост)
Конкретные значения для ссылочных типов бывают только в куче 

Несовсем понял: это как конкретные значения для ссылочных типов? ссылка это тоже тип, хотя и пишется 
Код

int *p=new int;
*p=12;

насамом деле если сделать
Код

m=p+1;

То значение переменной *м будет равно следующей ячейки памяти, а не 13.
А переменная p приэтом несёт сам адрес переменной типа int.
Я могу ошибаться, но помоему, когда я учил было именно так smile
P.S.: извините за жуткий офф топик, но я незнаю как этот код бдет выглядеть в vb.net, если он вообще там возможен.

Это сообщение отредактировал(а) Kirill89 - 11.4.2007, 21:50


--------------------
PM MAIL WWW   Вверх
Kirill89
Дата 11.4.2007, 22:02 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 501
Регистрация: 17.10.2006
Где: Питер

Репутация: нет
Всего: 4



Код

#include <iostream.h>

void main(){
    int *a=new int;
    int m;
    *a=1;
    m=*a+1;
    a=a+1;
    cout<<m<<"\n"; // здесь результат работы с переменной по адресу
    cout<<*a<<"\n"; // а вот и сам адрес
    cout<<a<<"\n"; // тот самый адрес памяти после которого записана переменная типа int
}

Вот тут всё видно smile
А как же ещё? никакие переменные кроме внтренних переменных проекта немогут быть записаны нигде кроме кучи.


--------------------
PM MAIL WWW   Вверх
Exception
Дата 12.4.2007, 15:29 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Участник Клуба
Сообщений: 4525
Регистрация: 26.12.2004

Репутация: 18
Всего: 186



Цитата(Kirill89 @  11.4.2007,  22:45 Найти цитируемый пост)
н позволяет легко лепить такие чудесные вещи как отмена любого колличества действий (как в MS Office)


Паттерн "Команда"

Теперь по поводу памяти.
Указателей в .NET (про всякие извраты молчу) нету. Но, с другой стороны, создав, например, массив ссылочных типов и записав объект myObject в элемент массива с индексом ноль, ты туда записываешь не сам объект, а ссылку на него, Другими словами, все переменные ссылочных типов являются указателями, которые "притворяются" обычными переменными.

Твоя цитата smile ?

Цитата(Kirill89 @  10.4.2007,  21:51 Найти цитируемый пост)
Вектор хранит только адреса памяти и позволяет делать обход по ним только без указания индекса. Тоесть по этому массиву можно пробежаться только от конца к началу или наоборот. А лист, если я не ошибаюсь, хранит конкретные значения и позволят обратиться к ним по индексу. 


Массив, список и т.п. всегда хранят именно ссылки на объекты, понимаешь, о чём я smile ?
PM   Вверх
HappyLife
Дата 13.4.2007, 11:39 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 642
Регистрация: 17.5.2006

Репутация: нет
Всего: 8



P.S Прошу прощения что к вам залез. Уж очень стало обидно за С++=)
Заранее извиняюсь. И если позволите, поправляю некоторые нюансы. Дабы не было ошибочных мнений.

Цитата

Несовсем... Вектор хранит только адреса памяти и позволяет делать обход по ним только без указания индекса. Тоесть по этому массиву можно пробежаться только от конца к началу или наоборот. А лист, если я не ошибаюсь, хранит конкретные значения и позволяте обратиться к ним по индексу.

Вектор не хранит только адреса, вектор хранит всё! Причем все элементы идут строго по порядку. Строго друг за другом. Но если у тебя есть желание хранить адреса, храни. Дело полностью твое.
По этому элементу можно пробежаться хоть с середины, да откуда угодно.
А лист хранит все тоже самое что и вектор, разница лишь в том что нету индексов. И не факт, что хранит он строго все попорядку.

Цитата

Конкретные значения для ссылочных типов бывают только в куче и нигде больше smile !

Я был другого мнения. Абсалютно везде.

Цитата

Несовсем понял: это как конкретные значения для ссылочных типов? ссылка это тоже тип, хотя и пишется 
Код
    
int *p=new int;
*p=12;


Не путать ссылки, и указатели.
Ссылка
Код

int a = 10;
int & b = a;


Цитата

То значение переменной *м будет равно следующей ячейки памяти, а не 13.
А переменная p приэтом несёт сам адрес переменной типа int.
Я могу ошибаться, но помоему, когда я учил было именно так smile
P.S.: извините за жуткий офф топик, но я незнаю как этот код бдет выглядеть в vb.net, если он вообще там возможен.

Абсаюлютно верно. В этом как раз таки и гибкость С++

Добавлено @ 11:41
Цитата(Kirill89 @ 11.4.2007,  22:02)
Код

#include <iostream.h>

void main(){
    int *a=new int;
    int m;
    *a=1;
    m=*a+1;
    a=a+1;
    cout<<m<<"\n"; // здесь результат работы с переменной по адресу
    cout<<*a<<"\n"; // а вот и сам адрес
    cout<<a<<"\n"; // тот самый адрес памяти после которого записана переменная типа int
}

Вот тут всё видно smile
А как же ещё? никакие переменные кроме внтренних переменных проекта немогут быть записаны нигде кроме кучи.

Да нет. Кроме кучи переменные еще в стеке ошиваются.

Код

    cout<<*a<<"\n"; // а вот и сам адрес

Нее... это не адрес, это случайное значение...
Адрес перется так
Код

cout << reiterpret_cast<int>(a);



Это сообщение отредактировал(а) HappyLife - 13.4.2007, 11:43
PM MAIL   Вверх
ivashkanet
Дата 13.4.2007, 11:47 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Кодю потиху
****


Профиль
Группа: Участник Клуба
Сообщений: 3684
Регистрация: 23.2.2006
Где: Гомель, Беларусь

Репутация: 5
Всего: 149



Цитата(HappyLife @  13.4.2007,  10:39 Найти цитируемый пост)
Вектор не хранит только адреса, вектор хранит всё! 

Откуда такие данные? Вы можете это подтвердить документально?
Цитата(HappyLife @  13.4.2007,  10:39 Найти цитируемый пост)
Я был другого мнения. Абсолютно везде.

Есть два вида памяти: Стек и Куча. В первом хранятся Value-типы, во втором --- Ссылочные и запакованные Value-типы.
Цитата(HappyLife @  13.4.2007,  10:39 Найти цитируемый пост)
В этом как раз таки и гибкость С++

Возможно, но это еще и потенциальные ошибки выхода за пределы массива и уничтожения чужих данных.
В .Net есть специальные классы, которые предоставляют похожую логику -- Итераторы, которые, к тому же безопасны. 

PM MAIL WWW ICQ   Вверх
HappyLife
Дата 13.4.2007, 13:35 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 642
Регистрация: 17.5.2006

Репутация: нет
Всего: 8



ivashkanet, см стандарт.
Вектор обязан, чтобы все элементы хранились друг за другом.
Код

Есть два вида памяти: Стек и Куча. В первом хранятся Value-типы, во втором --- Ссылочные и запакованные Value-типы.

В стеке храниться локальные переменные, насколько мне извесно( не верен сто процентно)
А в куче храниться все созданное new.


Я не принижаю преимущество NET.
По мне как программисту, главное чтобы работало, чтобы написать можно было быстро, и рефакторить в будущем не мучительно.
Я хоть на досовском басике напишу. если условиям удовлетворит.
PM MAIL   Вверх
ivashkanet
Дата 13.4.2007, 13:49 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Кодю потиху
****


Профиль
Группа: Участник Клуба
Сообщений: 3684
Регистрация: 23.2.2006
Где: Гомель, Беларусь

Репутация: 5
Всего: 149



Цитата(HappyLife @  13.4.2007,  12:35 Найти цитируемый пост)
Вектор обязан, чтобы все элементы хранились друг за другом.

Элементы или ссылки на них?
Цитата(HappyLife @  13.4.2007,  12:35 Найти цитируемый пост)
В стеке храниться локальные переменные, насколько мне извесно( не верен сто процентно)
А в куче храниться все созданное new.

С некоторым могу поспорить smile
1) 
Код
point = new Point(0,0)

Будет хранится в стеке (ибо структура, выступающая локальной переменной).
2) внутри кода той же структуры Point координата X точки не является локальной переменной, но она будет храниться в стеке, как часть структурной переменной.
PM MAIL WWW ICQ   Вверх
Kirill89
Дата 13.4.2007, 15:04 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 501
Регистрация: 17.10.2006
Где: Питер

Репутация: нет
Всего: 4



Цитата(Exception @  12.4.2007,  15:29 Найти цитируемый пост)
Массив, список и т.п. всегда хранят именно ссылки на объекты, понимаешь, о чём я  ? 

Учту.
Цитата(HappyLife @  13.4.2007,  11:39 Найти цитируемый пост)
Абсаюлютно верно. В этом как раз таки и гибкость С++

smile
Цитата(HappyLife @  13.4.2007,  11:39 Найти цитируемый пост)
Нее... это не адрес, это случайное значение...
Адрес перется так

код VB.NET
1:

cout << reiterpret_cast<int>(a);

А можно немного подробнее про эту комманду?
Цитата(ivashkanet @  13.4.2007,  13:49 Найти цитируемый пост)
2) внутри кода той же структуры Point координата X точки не является локальной переменной, но она будет храниться в стеке, как часть структурной переменной. 

Разве!? Помоему сама структура point будет хранить ссылки на переменные в кучи, тоесть именно на переменные X и Y  smile 


--------------------
PM MAIL WWW   Вверх
ivashkanet
Дата 13.4.2007, 15:05 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Кодю потиху
****


Профиль
Группа: Участник Клуба
Сообщений: 3684
Регистрация: 23.2.2006
Где: Гомель, Беларусь

Репутация: 5
Всего: 149



Цитата(Kirill89 @  13.4.2007,  14:04 Найти цитируемый пост)
Разве!? Помоему сама структура point будет хранить ссылки на переменные в кучи, тоесть именно на переменные X и Y

А в чем тогда фишка структуры?
В куче хранится только те части структуры, которые являются классами.
А int (тип переменной X) это как раз структурный тип

Это сообщение отредактировал(а) ivashkanet - 13.4.2007, 15:21
PM MAIL WWW ICQ   Вверх
Kirill89
Дата 13.4.2007, 19:47 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 501
Регистрация: 17.10.2006
Где: Питер

Репутация: нет
Всего: 4



ivashkanet, тогда получается, что все "простые" (классические) переменные хранятся в стеке? Что-то нистекется: классы хранятся в куче, но в классе могт быть переменные, которые отдельно от него хранятся в стеке? А структура это мини класс smile ну во всяком случае в моём понимании.
Цитата(HappyLife @  13.4.2007,  11:39 Найти цитируемый пост)
код VB.NET
1:

    cout<<*a<<"\n"; // а вот и сам адрес





Нее... это не адрес, это случайное значение...

Стоп. Как не адрес?! Там значение вида 00х000000 - тоесть переменная типа long. Как в int записалось случайное значение типа long?

Это сообщение отредактировал(а) Kirill89 - 13.4.2007, 19:48


--------------------
PM MAIL WWW   Вверх
Exception
Дата 14.4.2007, 20:16 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Участник Клуба
Сообщений: 4525
Регистрация: 26.12.2004

Репутация: 18
Всего: 186



Цитата(HappyLife @  13.4.2007,  12:39 Найти цитируемый пост)
Не путать ссылки, и указатели.


Мы говорим о ссылках в C# / VB .NET, а не о ссылках C++. Никто ничего не путает.

Цитата(HappyLife @  13.4.2007,  14:35 Найти цитируемый пост)
Я не принижаю преимущество NET.


Причём тут преимущества? Мы сейчас не о них спорим smile .
Цитата(Kirill89 @  13.4.2007,  20:47 Найти цитируемый пост)
ivashkanet, тогда получается, что все "простые" (классические) переменные хранятся в стеке? Что-то нистекется: классы хранятся в куче, но в классе могут быть переменные, которые отдельно от него хранятся в стеке?


Гуглить пробовали smile ?

Читаем тут.


Цитата(Kirill89 @  13.4.2007,  20:47 Найти цитируемый пост)
А структура это мини класс, ну во всяком случае в моём понимании.


А в моём понимании машина -- это мини-самолёт. Почему не летает?

P.S. Кончаем обсуждать C++ уже.

Добавлено через 43 секунды
И ещё о памяти в .NET.
PM   Вверх
Страницы: (3) [Все] 1 2 3 
Ответ в темуСоздание новой темы Создание опроса
Правила форума VB .NET
diadiavova
  • Прежде чем задать вопрос, воспользуйтесь поиском: возможно Ваш вопрос уже обсуждался и на него был получен ответ.
  • Если такой же вопрос не найден, не стоит задавать свой вопрос в любую тему, создайте новую.
  • Заголовок темы должен отображать ее суть.
  • Содержание поста должно описывать проблему понятно, но в то же время, по возможности, лаконично. Сначала следует описать суть вопроса, потом можно привести пример кода, не вынуждайте других участников угадывать в чем Ваша проблема - телепатов здесь нет.
  • Будьте взаимно вежливы и дружелюбны.
  • При оформлении сообщений используйте форматирование, примеры кода заключайте в теги [CODE=vbnet][/CODE].
  • Также ознакомьтесь с общими правилами, действующими на всем форуме.
  • Если вопрос решен, не забывайте помечать тему решенной(вверху темы есть ссылка). Кроме того, если Вы хотите отблагодарить участников, оказавших помощь в решении, можно повысить им репутацию, в случае, если у Вас менее 100 сообщений в форуме и функция изменения репутации Вам недоступна, можете написать сюда.
  • Общие вопросы по программированию на платформе .NET обсуждаются здесь.
  • Литература по VB .NET обсуждается здесь.

Если Вам помогли и атмосфера форума Вам понравилась, то заходите к нам чаще! С уважением, diadiavova.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | VB .NET | Следующая тема »


 




[ Время генерации скрипта: 0.1755 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.