Задать свойство объекта из других свойств объекта Вопрос - PullRequest
0 голосов
/ 27 июня 2011

Мне очень жаль, если название темы не соответствует моей проблеме.Я собирался его погуглить, но понятия не имею, как называется моя «проблема»: (

Я думаю, что это действительно базовый вопрос, но я думаю, что это важно понять. Прежде всего, яЯ покажу код:

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;

namespace ConsoleApplication1
{
    class Program
    {
        static void Main(string[] args)
        {
            A a = new A();
            a.x = 5;
            a.y = 41;

            B b = new B();
            b.a = 14;
            b.b = a.y;
            b.c = a;

            a.x += 10;
            a.y -= 30;
        }
    }

    class A
    {
        public int x;
        public int y;
    }

    class B
    {
        public int a;
        public int b;
        public A c;
    }
}

У меня есть несколько очень базовых классов A и B. B может содержать экземпляр A. У меня есть «проблема»: если передать A в Bи установите свойство A (a.y -= 30;), значение b.b также изменится. Как этого избежать? Я просто хочу, чтобы b.b было значением a.y. Но если a.y изменяется, b.b Не должен! Это единственный способ сделать это, создать клон объектов и затем передать его?

Ответы [ 3 ]

2 голосов
/ 27 июня 2011

Все работает как положено

enter image description here

1 голос
/ 27 июня 2011

с

bc = a;

вы передаете ссылку на объект.

, чтобы избежать этого, вы должны использовать копию объекта.клон, как вы уже узнали.

0 голосов
/ 27 июня 2011

С a.y -= 30, b.b не изменится.int является типом значения, а не ссылочным типом.

(Ваше предположение неверно)

...