Từ 1 tới 5 trên tổng số 5 kết quả

Đề tài: làm sao để gán giá trị mới mà giá trị cũ không đổi

  1. #1
    Ngày gia nhập
    04 2011
    Bài viết
    21

    Mặc định làm sao để gán giá trị mới mà giá trị cũ không đổi

    Mình có code sau:
    +Class Content:
    namespace myContent
    {
    public class Content
    {
    string name;
    public string Name
    {
    set { name = value; }
    get { return name; }
    }
    public Content()
    {
    name = null;
    }
    }
    }

    +Class Template:
    namespace myTemplate
    {
    class Template
    {
    List<Content> Listcontent;
    public Template()
    {
    Listcontent = new List<Content>();
    }

    public void AddListContnet(Content con)
    {
    Listcontent.Add(con);
    }

    public List<Content> GetListContnet()
    {
    return Listcontent;
    }
    }
    }




    +Form 1:
    namespace myForm1
    {
    public partial class Form1 : Form
    {
    Content con;
    Template tem;
    public Form1()
    {
    InitializeComponent();
    con = new Content();
    con.Name = "hehehoho";
    tem = new Template();
    tem.AddListContnet(con);
    }

    private void butNewForm2_Click(object sender, EventArgs e)
    {

    Form2 fr2 = new Form2(tem.GetListContnet());
    fr2.ShowDialog();
    }
    }
    }


    +Form 2:
    namespace myForm2
    {
    public partial class Form2 : Form
    {
    List<Content> ListContent;
    List<Content> ListOldContent;
    public Form2(List<Content> list)
    {
    InitializeComponent();
    ListContent = new List<Content>();
    ListContent = list;
    ListOldContent = list;
    }

    private void butNewValue_Click(object sender, EventArgs e)
    {
    ListContent[0].Name = "aaaaaaaa";
    MessageBox.Show(ListContent[0].Name.ToString());
    }

    private void butOldValue_Click(object sender, EventArgs e)
    {
    MessageBox.Show(ListOldContent[0].Name.ToString());
    }
    }
    }

    vấn đề là ở form 2 khi butNewValue được nhấn thì ListContent gán giá trị mới và thay đổi thì ok rồi, tuy nhiên khi nhấn butOldValue thì giá tri ListOldContent lại bằng với giá trị mới của ListContent . Giờ minh không biết làm sao để giữ nguyên giá trị củ ListOldContent.


    Nhìn code khó hiều thì các bạn tải cái này: http://www.mediafire.com/?au91pw1zya9f97p

    Các bạn ráng giúp mình, mình xin cám ơn nhiều

  2. #2
    Ngày gia nhập
    08 2009
    Nơi ở
    TP Cần Thơ - Lộ 91B
    Bài viết
    214

    - Dấu = có nghĩa là tham chiếu nên khi có sự thay đổi ở các đối tượng tham chiếu tới danh sách cũng sẽ làm thay đổi nội dung danh sách gốc

    Code:
    //-- Code ở Form 2
         ListContent = list;
         ListOldContent = list;
    
    //-- Sửa lại thành
    
         ListContent.AddRange(list);
         ListOldContent.AddRange(list);
    - Đoạn Code sửa ở trên có nghĩa là lấy thông tin trong danh sách gốc copy qua cho danh sách mới

    PHÁT TRIỂN PHẦN MỀM HỖ TRỢ CÔNG VIỆC
    ỨNG DỤNG QUẢN LÝ CHO DOANH NGHIỆP VỪA VÀ NHỎ

    (0969.867.490 - ltnghia.wins@gmail.com)

  3. #3
    Ngày gia nhập
    04 2011
    Bài viết
    21

    Trích dẫn Nguyên bản được gửi bởi latuine Xem bài viết
    - Dấu = có nghĩa là tham chiếu nên khi có sự thay đổi ở các đối tượng tham chiếu tới danh sách cũng sẽ làm thay đổi nội dung danh sách gốc

    Code:
    //-- Code ở Form 2
         ListContent = list;
         ListOldContent = list;
    
    //-- Sửa lại thành
    
         ListContent.AddRange(list);
         ListOldContent.AddRange(list);
    - Đoạn Code sửa ở trên có nghĩa là lấy thông tin trong danh sách gốc copy qua cho danh sách mới
    hix không được bạn ơi, nó vẫn ra như cũ, phiền bạn down project của mình và thử giúp, cám ơn bạn nhiều

  4. #4
    Ngày gia nhập
    08 2009
    Nơi ở
    TP Cần Thơ - Lộ 91B
    Bài viết
    214

    - Bạn tạo 1 project rồi copy đoạn code phía dưới vào bạn sẽ hiểu

    Code:
            List<string> firstList = new List<string>();
            List<string> newList = new List<string>();
            List<string> oldList = new List<string>();
    
            public Form1()
            {
                InitializeComponent();
                firstList.Add("AAA");
    
                newList.AddRange(firstList);
                oldList.AddRange(firstList);
    
                newList[0] = "BBB";
    
                MesageBox.Show( newList[0] );
                MesageBox.Show( oldList[0] );
            }

    PHÁT TRIỂN PHẦN MỀM HỖ TRỢ CÔNG VIỆC
    ỨNG DỤNG QUẢN LÝ CHO DOANH NGHIỆP VỪA VÀ NHỎ

    (0969.867.490 - ltnghia.wins@gmail.com)

  5. #5
    Ngày gia nhập
    04 2011
    Bài viết
    21

    Trích dẫn Nguyên bản được gửi bởi latuine Xem bài viết
    - Bạn tạo 1 project rồi copy đoạn code phía dưới vào bạn sẽ hiểu

    Code:
            List<string> firstList = new List<string>();
            List<string> newList = new List<string>();
            List<string> oldList = new List<string>();
    
            public Form1()
            {
                InitializeComponent();
                firstList.Add("AAA");
    
                newList.AddRange(firstList);
                oldList.AddRange(firstList);
    
                newList[0] = "BBB";
    
                MesageBox.Show( newList[0] );
                MesageBox.Show( oldList[0] );
            }
    đúng là phải thêm cái AddRange, nhưng vẫn không được, có thể do lớp Template và lớp Content mình viết không ổn chổ nào đó, phiền bạn giúp mình

Quyền hạn của bạn

  • Bạn không thể gửi đề tài mới
  • Bạn không thể gửi bài trả lời
  • Bạn không thể gửi các đính kèm
  • Bạn không thể chỉnh sửa bài viết của bạn