Непонятное поведение присвоения - C#

Узнай цену своей работы

Формулировка задачи:

private void SetAddressType(DAL.Data.Organization org,bool isMailingSame,bool create)
        {
            if (org.OrganizationType != (byte) OrganizationType.Individual)
            {
                var legalAddress = org.Addresses[0];
                var mailingAddress = org.Addresses[1];
 
                if (create)
                {
                    if (isMailingSame)
                    {
                        mailingAddress = legalAddress;
                    }            
                    legalAddress.AddressType = (byte)AddressType.Legal;
                    mailingAddress.AddressType = (byte)AddressType.Mailing;
                    org.Addresses.Clear();
                    org.Addresses.Add(legalAddress);
                    org.Addresses.Add(mailingAddress);
                }   
            }
         }
После того, как сработало приравнивание mailingAddress = legalAddress; Происходит нечто, мне не очень понятное.
legalAddress.AddressType = (byte)AddressType.Legal;
                    mailingAddress.AddressType = (byte)AddressType.Mailing;
в результате я получаю, что адрестайп у legaladdress и mailingaddress одинаковый.равный (byte)AddressType.Mailing.
mailingAddress.AddressType = (byte)AddressType.Mailing;
в этот момент почему-то меняется и значение у legaladdress.

Решение задачи: «Непонятное поведение присвоения»

textual
Листинг программы
legalAddress.AddressType = (byte)AddressType.Legal;

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

6   голосов , оценка 4.167 из 5