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

Đề tài: Ilist khác List ở chỗ nào?

  1. #1
    Ngày gia nhập
    03 2009
    Bài viết
    3

    Mặc định Ilist khác List ở chỗ nào?

    Em thấy thầy Lấy danh sách học sinh mà trả ra IList, em chưa hiểu công dụng của Ilist là làm gì ạ? Mong các anh giải thích giúp
    Visual C# Code:
    1.         public IList LayDanhSach()
    2.         {
    3.             ArrayList ds = new ArrayList();
    4.             // B1 & B2: Tao chuoi ket noi, mo ket noi bang doi tuong ket noi
    5.             OleDbConnection cn;
    6.             cn = DataProvider.ConnectionData();
    7.             // B3: Tao chuoi strSQL thao tac CSDL
    8.             string strSQL;
    9.             strSQL = "Select * From HocSinh";
    10.             OleDbCommand cmd = new OleDbCommand(strSQL, cn);
    11.             OleDbDataReader dr;
    12.             dr = cmd.ExecuteReader();
    13.             while (dr.Read())
    14.             {
    15.                 HocSinhDto hsDto = new HocSinhDto();
    16.                 hsDto.Ma = (int)dr["Ma"];
    17.                 hsDto.Ten = (string)dr["Ten"];
    18.                 hsDto.NgaySinh = (DateTime)dr["NgaySinh"];
    19.                 hsDto.DiaChi = (string)dr["DiaChi"];
    20.                 hsDto.Toan = (double)dr["Toan"];
    21.                 hsDto.Ly = (double)dr["Ly"];
    22.                 hsDto.Hoa = (double)dr["Hoa"];
    23.                 hsDto.DTB = (double)dr["DTB"];
    24.                 hsDto.MaLop = (int)dr["MaLop"];
    25.                 ds.Add(hsDto);
    26.             }
    27.             // B5: Dong ket noi CSDL
    28.             dr.Close();
    29.             cn.Close();
    30.             return ds;
    31.         }

  2. #2
    Ngày gia nhập
    09 2008
    Nơi ở
    Ở nhà chứ đâu... nhìn cái gì?!?!
    Bài viết
    218

    IList là interface, mở Object Viewer trong Visual Studio để xem thêm.

    Trong C# không có List nhé, chỉ có List<T> thôi. Nó là một generic collection, mở Object Viewer trong Visual Studio để xem thêm.

    Cheer
    Quá nản cái viễn cảnh hiện tại. Nhiều "thanh niên" sống "ảo" quá. Thời nào rồi mà còn hỏi WinForms + ADO.NET

  3. #3
    Ngày gia nhập
    03 2009
    Bài viết
    3

    Anh có thể nói rõ hơn giúp em được không ạ :(

  4. #4
    Ngày gia nhập
    09 2008
    Nơi ở
    Ở nhà chứ đâu... nhìn cái gì?!?!
    Bài viết
    218

    Bạn nhìn lại đoạn code của "thầy" bạn thử 1 lần xem có gì thắc mắc ko? Phương thức có kiểu trả về là IList đúng ko? Nhưng lệnh return lại là một ArrayList... Là thế nào?

    Vậy suy ra đối tượng ArrayList, nó implements thằng interface IList đúng không bạn?

    Vậy câu lệnh trên bạn có thể viết lại như sau vẫn chạy tốt:

    Visual C# Code:
    1. public ArrayList LayDanhSach()
    2. {
    3.     // copy và paste đoạn code "thầy" bạn viết vào đây...
    4. }

    Như vậy, vì sao "thầy" bạn lại dùng IList mà không phải ArrayList? Thứ nhất, giữa IList và ArrayList có chung những methods và properties sau:

    Visual C# Code:
    1. int Add(object)
    2. void Clear()
    3. bool Contains(object)
    4. int IndexOf(object)
    5. void Insert(int, object)
    6. void Remove(object)
    7. void RemoveAt(int)
    8. bool IsFixedSize { get; }
    9. bool IsReadonly { get; }

    Có thể là do phương thức "thầy" bạn viết, sau này chỉ được thao tác với những methods và properties trên thôi, nên đã không cần dùng ArrayList (ArrayList có nhìu hơn gấp đôi số lượng methods và properties so với IList).

    IList khác với List<T> thế nào?
    List<T> cũng implement IList, nhưng nó lại khác với ArrayList; List<T> là một Generic collection, còn ArrayList là non-Generic collection.

    ArrayList có thể chứa mọi đối tượng extends từ Object. Tùy trường hợp chúng ta mới dùng nó.

    List<T> chỉ chấp nhận chứa một đối tượng kiểu T mà thôi. Ví dụ:

    Visual C# Code:
    1. List<int> integerList = new List<int>(); // chỉ chứ kiểu số int mà thôi.
    2. ...
    3. List<string> stringList = new List<string>();
    4. string myName = "O'Wicked Fox";
    5. stringList.Add(myName);
    6.  
    7. int myAge = 22;
    8. stringList.Add(myAge);

    Build sẽ báo 2 lỗi ngay
    1. Không thể chấp nhận kiểu int với kiểu yêu cầu là string...
    2. Lỗi tham số truyền vào phuơng thức Add(string) của List<string>...

    Tuy nhiên nếu làm tuơng tự với ArrayList thì ok

    Cheer

    PS: Lần sau nếu "ông thầy" bạn làm mà bạn không hiểu, thì bạn nên giơ tay hỏi ngay với ổng luôn nhé , mặt đối mặt thì dễ nói chuyện hơn là cách mình với bạn trao đổi.

    Nếu bạn có cài Visual Studio, bạn có thể vào View>Object Browser để xem các đối tượng mình chưa biết nhé
    Quá nản cái viễn cảnh hiện tại. Nhiều "thanh niên" sống "ảo" quá. Thời nào rồi mà còn hỏi WinForms + ADO.NET

  5. #5
    Ngày gia nhập
    11 2006
    Bài viết
    633

    Em thấy thầy Lấy danh sách học sinh mà trả ra IList, em chưa hiểu công dụng của Ilist là làm gì ạ?
    Tại sao ko hỏi thầy? Ko dám? Mình trả tiền cho thầy giáo để ổng truyền kiến thức cho mình mà, tại sao lại ko tận dụng ổng, phí tiền cho 1 thầy rồi lại phí tiền net để được học kiến thức, có phải phí tiền gấp đôi ko
    Dân IT phải biết bỏ tiền ra ít mà thu vào được nhiều chứ.

  6. #6
    Ngày gia nhập
    03 2009
    Bài viết
    3

    Mặc định Ilist khác List ở chỗ nào?

    Em cảm ơn các pác đã chỉ giáo, vì một số lý do thầm kín

  7. #7
    Ngày gia nhập
    11 2010
    Bài viết
    9

    Trích dẫn Nguyên bản được gửi bởi huynguyen Xem bài viết
    Tại sao ko hỏi thầy? Ko dám? Mình trả tiền cho thầy giáo để ổng truyền kiến thức cho mình mà, tại sao lại ko tận dụng ổng, phí tiền cho 1 thầy rồi lại phí tiền net để được học kiến thức, có phải phí tiền gấp đôi ko
    Dân IT phải biết bỏ tiền ra ít mà thu vào được nhiều chứ.
    like :X

  8. #8
    Ngày gia nhập
    08 2011
    Nơi ở
    Yên Bái- Hà Nội
    Bài viết
    961

    Trích dẫn Nguyên bản được gửi bởi huynguyen Xem bài viết
    Tại sao ko hỏi thầy? Ko dám? Mình trả tiền cho thầy giáo để ổng truyền kiến thức cho mình mà, tại sao lại ko tận dụng ổng, phí tiền cho 1 thầy rồi lại phí tiền net để được học kiến thức, có phải phí tiền gấp đôi ko
    Dân IT phải biết bỏ tiền ra ít mà thu vào được nhiều chứ.
    Bác này là thầy giáo đó. Hỏil được mà.hehe.
    Skype: mrfour.it - Yahoo:mrfour_it
    Gmail: mrfour.it@gmail.com
    Bạn muốn học lập trình? Bạn chưa có kiến thức cơ bản? Bạn muốn học từ cơ bản tới nâng cao?... Bạn muốn có source code để tham khảo? Muốn có người hỗ trợ khi học?....http://www.laptrinh123.com sẽ giúp bạn những điều đó!

Các đề tài tương tự

  1. Tạo vòng lặp trong IList như thế nào?
    Gửi bởi EternalNewbie trong diễn đàn Thắc mắc lập trình ASP.NET
    Trả lời: 6
    Bài viết cuối: 19-01-2013, 09:24 AM
  2. Làm sao để có thể cập nhật ilist bằng linq vậy?
    Gửi bởi thoigian15 trong diễn đàn Thắc mắc lập trình C#
    Trả lời: 0
    Bài viết cuối: 30-08-2011, 11:47 PM
  3. khác nhau giữa IEnumerable<> và IList<>
    Gửi bởi tinhthanhiepsi9x trong diễn đàn Thắc mắc lập trình C#
    Trả lời: 3
    Bài viết cuối: 16-06-2011, 08:25 PM
  4. Sự khác nhau giữa IEnumerable va IList
    Gửi bởi danielle2009 trong diễn đàn Thắc mắc lập trình C#
    Trả lời: 8
    Bài viết cuối: 23-01-2011, 08:54 PM
  5. Chuyển các phần tử từ list này sang list kia. Sửa giúp mình?
    Gửi bởi Vaanres trong diễn đàn Thắc mắc lập trình C#
    Trả lời: 1
    Bài viết cuối: 25-07-2010, 09:45 PM

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