Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > .NET для новичков > конструктор класса с классом в качестве параметра


Автор: Syrex 5.12.2011, 09:56
Подскажите, как правильно написать конструктор класса, у которого в качестве параметра стоит экземпляр этого же класса?
Код

CMyClass
{
    private string _Host = null;
    private CookieCollection _Cookies = null;
   
    public CMyClass()
    {
    }
   
    public CMyClass(CMyClass ob)
    {
        _Host = ob.Host;
        _Cookies = ob.Cookies
    }
   
    public string Host
    {
        get { return _Host; }
        set { _Host = value; }
    }
    
    public CookieCollection Cookies
    {
        get { return _Cookies; }
        set { if (value != null && value.Count > 0) _Cookies = value; }
    }
}


Далее в коде
Код

CCodeClass
{
    CMyClass MyVar=new CMyClass;
    MyVar.Host="hostname";
    MyVar.Cookies=new CookieCollection();
    
    Func1(MyVar)
    
    private void Func1(CMyClass inClass)
    {
        CMyClass MyTmpVar = new CMyClass(inClass);
        MyTmpVar.Cookies.Add(new Cookie());// после данной строчки параметры MyVar.Cookies.Count тоже увеличивается на 1у
    }
}


Как сделать, чтобы переменные inClass и MyTmpVar  не зависили друг от друга?

Автор: Voyager 5.12.2011, 11:33
Либо делай структурой, либо реализуй Clone.

Автор: Syrex 5.12.2011, 12:17
можете показать кодом, как делать Clone ?

Автор: KelTron 5.12.2011, 15:08
В строке 13:
Код

_Cookies = ob.Cookies

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

_Cookies = new CookieCollection();
...здесь копирование из ob.Cookies в _Cookies


Автор: Syrex 5.12.2011, 15:28
Спасибо

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)