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

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Передача параметров TreeNode и XmlNode 
:(
    Опции темы
DoKZ
Дата 6.11.2013, 18:35 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



Я, по большей части, программист C++ и Delphi.

Сейчас активно занялся C#, поэтому следующий вопрос для меня остаётся непонятным.

Предположим следующий код. Изменение вытащенного из XmlDocument'а XmlNode'а влияет на документ:

Код

// Класс

using namespace Tools.Subclass
{
  class OverXmlNode
  {
    private XmlNode xml;
    
    public XmlNode XML
    {get {...} set {...} }

    private OverXmlNode(XmlNode param)
    {
      // Как я понимаю, в param передаётся копия (раз нет ref) 
      // объекта XmlNode и xml присваивается этой копии.
      xml = param;
    }
  }
}

// Рабочий код

XmlDocument doc;
XmlNode node = doc.ChooseSingleNode(xp);
OverXmlNode overNode = new OverXmlNode(node);
overNode.XML.AppendChild(smth); // или еще что-либо
// XmlDocument doc поменялся, выбранный через 
// XPath элемент изменился. Почему? Ведь мы передавали не 
// ссылку, а копию объекта.


И второй случай:

Код

// Предположим, на форме есть TreeView.

TreeNode node = treeView1.Nodes[0];
node.Tag = 5;

MessageBox.Show(treeView1.Nodes[0].Tag);
// Опять-таки, значение Node поменялось в TreeView, 
// хотя TreeNode node = treeView1.Nodes[0] должно (по крайней мере, 
// в других языках) означать копирование.


Если написать следующий код:
Код

int a = 5;
int b = a;
b = b + 5;


a останется неизменным, верно?
Так в чем разница и когда можно использовать такой странный способ изменения объектов, а когда нет? И как это работает, передаются указатели или что?

Заранее спасибо  smile 
PM MAIL   Вверх
infarch
Дата 7.11.2013, 10:29 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

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



Почитайте вот тут http://msdn.microsoft.com/en-us/library/3ewxz6et.aspx про типы данных. Особенно про ссылочные и значения.
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Прежде чем создать тему, посмотрите сюда:
mr.DUDA
THandle

Используйте теги [code=csharp][/code] для подсветки кода. Используйтe чекбокс "транслит" если у Вас нет русских шрифтов.
Что делать если Вам помогли, но отблагодарить помощника плюсом в репутацию Вы не можете(не хватает сообщений)? Пишите сюда, или отправляйте репорт. Поставим :)
Так же не забывайте отмечать свой вопрос решенным, если он таковым является :)


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

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


 




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


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

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