Hiển thị kết quả từ 1 đến 6 / 6
  1. #1
    Tham gia
    28-05-2013
    Bài viết
    1
    Like
    0
    Thanked 0 Times in 0 Posts

    Hỏi nhược điểm của Cấu trúc foreach và for ?

    Các bạn cho mình hỏi về tất cả các nhược điểm của cấu trúc lặp Foreach và nhược điểm của cấu trúc lặp For
    Mong các bạn giúp đỡ càng chi tiết càng tốt ! thanks
    Quote Quote

  2. #2
    Tham gia
    13-10-2008
    Location
    www.vnfox.com
    Bài viết
    462
    Like
    0
    Thanked 10 Times in 10 Posts
    Cái này có fải trả lời homework không ? Bạn có search google chưa ?


    Foreach là đi từ trên xuống dưới object

    còn for thì có thể đi index bất cứ ở đâu nhưng mà kô fải object là dạng index rồi muốn có object thì fai varibale[i]

    Chỉ đơn giãn vậy thôi

  3. #3
    Tham gia
    10-04-2005
    Location
    Hồ Chí Minh, Việt Nam, Trái Đất, Thái Dương Hệ
    Bài viết
    654
    Like
    0
    Thanked 8 Times in 7 Posts
    Đây là cách trả lời nhanh nhất:

    http://lmgtfy.com/?q=foreach+vs+for+c%23

    Còn nếu bạn muốn đi sâu, đi xa, xa ơi là xa (cho vui) thì:

    1/ Foreach tiện hơn for và nhìn hao hao giống mấy cái for, each, map function của mấy languages khác cũng có gốc rễ C

    2/ Foreach về lý thuyết là dựa trên IEnumrable cho nên sẽ chậm hơn và tốn kém (cpu cycle, memory space) hơn for. Tuy nhiên do foreach được M$ khuyên dùng nên .net compiler sẽ optimize foreach khiến cho foreach và for gần như tương tự nhau. Điểm khác biệt nếu có chỉ ở những trường hợp nhỏ lẻ.

    3/ Foreach cực kỳ tiện trong trường hợp collection không có indexer. (Như linked list, remote list, concurrent stream, object stream, vv...). Không phải cấu trúc nào cũng có count và có indexer, do đó không phải lúc nào cũng dùng for cũng tiện được.

    Về sở thích cá nhân:

    a/ Khi nào cần performance, dùng for với dạng sau:

    Code:
         int length = myList.Count;
         for (int i = 0; i < length; i++)
         {
         }
    Để ý là count được đặt ra ngoài vòng lặp. Điều này giúp cho tăng performance khi list thay đổi, khi multi-threading và giúp cho CPU dự đoán tốt hơn. (Cái này sẽ thể hiện trên cpu dòng xeon hay cpu cho server)

    b/ Khi nào list nhỏ ( 1000 items ), và không cần quan tâm performance gì cả, đoạn code này là tiện nhất và đỡ phải gõ nhiều:

    Code:
        foreach (var item in myList)
        {
        }
    Để ý là dùng var để đỡ mất công khai báo kiểu. Khi nào refactor inner type của myList thì cũng khỏi phải sửa code.
    - Minh Hải ( www.minh-hai.com )

  4. #4
    Tham gia
    12-10-2013
    Location
    SÀI GÒN
    Bài viết
    462
    Like
    27
    Thanked 35 Times in 34 Posts
    cấu trúc cái nào dễ bẻ hơn vậy?
    Cuộc sống tươi đẹp.

  5. #5
    Tham gia
    13-10-2008
    Location
    www.vnfox.com
    Bài viết
    462
    Like
    0
    Thanked 10 Times in 10 Posts
    Không hiểu câu hỏi cho lắm nhưng câu trả lời là cả 2

  6. #6
    Tham gia
    13-04-2012
    Bài viết
    3
    Like
    0
    Thanked 0 Times in 0 Posts

    111

    Cơ bản là cái nào làm được thì cái kia cũng làm được, For Each thuận tiện hơn nhưng có 1 số For Each dùng sẽ sai - nếu nó có liên quan đến thêm và xóa những Object lúc bạn chạy For Each.

Bookmarks

Quy định

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