<?xml version='1.0' encoding="utf-8"?>
      <rss version='2.0'>
      <channel>
      <title>Форум на Исходниках.RU</title>
      <link>https://forum.sources.ru</link>
      <description>Форум на Исходниках.RU</description>
      <generator>Форум на Исходниках.RU</generator>
  	
      <item>
        <guid isPermaLink='true'>https://forum.sources.ru/index.php?showtopic=2207&amp;view=findpost&amp;p=35152</guid>
        <pubDate>Thu, 29 May 2003 05:38:05 +0000</pubDate>
        <title>Опять ссылочные типы . . .Box/unbox</title>
        <link>https://forum.sources.ru/index.php?showtopic=2207&amp;view=findpost&amp;p=35152</link>
        <description><![CDATA[vad: &nbsp;Не без чужой помощи ;) уже, наверное, окончательно разобрался с данной ситуацией. <br> &nbsp;Не важно какой тип имеет переменная f, главное, что при присваиваниии меняется только поле внутри объекта. . . <br> &nbsp;Можно переменной f сделать любой тип - будет работать . . .]]></description>
        <author>vad</author>
        <category>.NET: Общие вопросы</category>
      </item>
	
      <item>
        <guid isPermaLink='true'>https://forum.sources.ru/index.php?showtopic=2207&amp;view=findpost&amp;p=35150</guid>
        <pubDate>Tue, 27 May 2003 15:09:00 +0000</pubDate>
        <title>Опять ссылочные типы . . .Box/unbox</title>
        <link>https://forum.sources.ru/index.php?showtopic=2207&amp;view=findpost&amp;p=35150</link>
        <description><![CDATA[kl: Прав. int - это алиас для System.Integer - value-type. При присваивании object'у типа-значения всегда неявно происходит упаковка (boxing - конструкция __box() в &nbsp;MC++). Это в первом случае.<br>Во втором случае - как ты описал. Просто банальное копирование значения<br><br>P.S. Если рассуждаешь правильно, а результаты не те - это баг. &nbsp;;D]]></description>
        <author>kl</author>
        <category>.NET: Общие вопросы</category>
      </item>
	
      <item>
        <guid isPermaLink='true'>https://forum.sources.ru/index.php?showtopic=2207&amp;view=findpost&amp;p=35148</guid>
        <pubDate>Tue, 27 May 2003 14:04:07 +0000</pubDate>
        <title>Опять ссылочные типы . . .Box/unbox</title>
        <link>https://forum.sources.ru/index.php?showtopic=2207&amp;view=findpost&amp;p=35148</link>
        <description><![CDATA[vad: <div class='tag-quote'><span class='tag-quote-prefix'>Цитата</span> <div class='quote '>Добавлено выделение кода. Прошу обратить внимание. kl</div></div><br><br>Есть примерчик:<br><br><div class='tag-code'><span class='pre_code'></span><div class='code  code_collapsed ' title='Подсветка синтаксиса доступна зарегистрированным участникам Форума.' style=''><div><div><ol type="1"><div class="code_line">&#60;br&#62;using System; &#60;br&#62;namespace Qwer &#60;br&#62;{ &#60;br&#62;class Simple&#60;br&#62;{ &#60;br&#62;public int f; &#60;br&#62;} &#60;br&#62;class Test&#60;br&#62;{ &#60;br&#62;public static void Main() &#60;br&#62;{ &#60;br&#62;int i = 123; &#60;br&#62;object o = i; &#60;br&#62;object o1 = o; &#60;br&#62;o1 = 345; &#60;br&#62;Console.WriteLine(&quot;o = {0}, o1 = {1}&quot;, o, o1); &#60;br&#62;&#60;br&#62;Simple a = new Simple(); &#60;br&#62;a.f = 1; &#60;br&#62;Sample b = a; &#60;br&#62;a.f = 2; &#60;br&#62;Console.WriteLine(&quot;a.f = {0}, b.f = {1}&quot;, a.f, b.f); &#60;br&#62;Console.ReadLine(); &#60;br&#62;} &#60;br&#62;} &#60;br&#62;} &#60;br&#62;</div></ol></div></div></div></div><script>preloadCodeButtons('1');</script><br><br>нА экране получаем:<br>o = 123, o1 = 345 <br>a.f = 2, b.f = 2  - ПОЧЕМУ ???<br><br><br>----------------------------------------<br> При присваивании i к о создается объект в куче, который и содержит значение 123<br>  Когда мы присвоили о1 = о - мы скопировали адрес ссылки и теперь о1 указывает на тот же объект, что и о<br>  о1 = 345 - 345 неявно приводится к оbject, то есть в куче создается объект, который содержит значение 345, значит о1 будет указывать на ДРУГОЙ объект в куче<br>  когда мы b=a, соответственно b тоже указывает на тот же объект в куче, что и а<br>  когда мы a.f = 2 - так как f - имеет тип int и присваивается ему тоже тип целый, то нового объекта в куче не создается и соответственно объекты a, b продолжают указывать на один и тот же объект в куче и поэтому на экране получаем такие результаты. . . <br>  ПРАВ ЛИ Я В СВОИХ РАССУЖДЕНИЯХ ?<br> И есть ли вариант, что рассуждая таким образом я получу неверные результаты?<br>]]></description>
        <author>vad</author>
        <category>.NET: Общие вопросы</category>
      </item>
	
      </channel>
      </rss>
	