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

Đề tài: Điểm khác nhau giữa Cấu trúc và class trong CSharp

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

    Smile Điểm khác nhau giữa Cấu trúc và class trong CSharp

    mình đọc tài liệu thấy có hỏi về Điểm khác nhau giữa Cấu trúc và class trong CSharp,và khi nào thì sử dụng cấu trúc có lợi hơn,ai có thể giúp mình không

  2. #2
    Ngày gia nhập
    01 2009
    Bài viết
    64

    buzz phát,

  3. #3
    Ngày gia nhập
    07 2008
    Nơi ở
    /media/Anime
    Bài viết
    2,288

    Mình nghĩ struct sẽ có lợi trong trường hợp cần truyền một nhóm thông tin vào hàm, chẳng hạn như thông tin sinh viên. Dĩ nhiên là ta có thể truyền cả lớp sinh viên vào nhưng phải làm các phương thức get để lấy dữ liệu ra, như vậy sẽ lâu hơn.
    Càng yêu mèo thì mèo càng mập. Mèo càng mập ta lại càng yêu.

  4. #4
    Ngày gia nhập
    07 2007
    Nơi ở
    TP.HCM
    Bài viết
    199

    Struct và class khác nhau thế nào thì đã có rất rất nhiều tài liệu hay các chủ đề trên 4rum nói rồi.

    Theo msdn thì struct gần giống với class, có các điểm khác nhau sau đây:
    • - Struct không hỗ trợ việc thừa kế (nhưng có thể thực thi giao diện)
    • - Không thể khai báo hàm khởi tạo hay hàm huy mặc định (không đối số). Nếu khai báo hàm khởi tạo có đối số thì phải khởi tạo giá trị cho tất cả các field của nó.
    • - Cũng không thể khai báo và khởi tạo ngay các field.
    • - Cấu trúc là một khiểu giá trị (nó thừa kế từ ValueType) (còn class là kiểu tham chiếu)
    • - Khi truyền struct vào phuơng thức, nó được truyền theo giá trị chú không như class là truyền tham khảo.


    Theo mình khi đã học lên hướng đối tượng thì không nên dùng struct làm gì nữa.

    Mình nghĩ struct sẽ có lợi trong trường hợp cần truyền một nhóm thông tin vào hàm, chẳng hạn như thông tin sinh viên. Dĩ nhiên là ta có thể truyền cả lớp sinh viên vào nhưng phải làm các phương thức get để lấy dữ liệu ra, như vậy sẽ lâu hơn.
    Nếu bạn để public trong class thì truy xuất được thôi, nhưng nói chung là không đúng OOP.

  5. #5
    Ngày gia nhập
    11 2008
    Nơi ở
    vngameday.com
    Bài viết
    62

    mình xin góp ý thêm, thực ra theo mình thì chúng cũng chỉ là 2 kiểu dữ liệu, kiểu struct là theo kiểu tham trị, còn kiểu class là theo kiểu tham chiếu. còn tham trị thế nào và tham chiếu thế nào thì các bạn chắc cũng khá rõ
    vngameday.com - khi niềm đam mê luôn rực cháy. Rất mong nhận được sự đóng góp từ các bạn...

  6. #6
    Ngày gia nhập
    10 2007
    Bài viết
    9

    Mặc định Điểm khác nhau giữa Cấu trúc và class trong CSharp

    Trích dẫn Nguyên bản được gửi bởi MATH-INFO Xem bài viết
    Struct và class khác nhau thế nào thì đã có rất rất nhiều tài liệu hay các chủ đề trên 4rum nói rồi.

    Theo msdn thì struct gần giống với class, có các điểm khác nhau sau đây:
    • - Struct không hỗ trợ việc thừa kế (nhưng có thể thực thi giao diện)
    • - Không thể khai báo hàm khởi tạo hay hàm huy mặc định (không đối số). Nếu khai báo hàm khởi tạo có đối số thì phải khởi tạo giá trị cho tất cả các field của nó.
    • - Cũng không thể khai báo và khởi tạo ngay các field.
    • - Cấu trúc là một khiểu giá trị (nó thừa kế từ ValueType) (còn class là kiểu tham chiếu)
    • - Khi truyền struct vào phuơng thức, nó được truyền theo giá trị chú không như class là truyền tham khảo.


    Nếu bạn để public trong class thì truy xuất được thôi, nhưng nói chung là không đúng OOP.
    mình đồng ý với bạn math-info vì nếu bạn dùng struct thì bạn không thể đảm bảo các 3 tính chất bắt buộc của oop đó là bảo toàn, đa xạ, và kế thừa. Và không thể áp dụng mấy cái design-partner rất quan trọng đó nghe bạn
    Theo mình khi đã học lên hướng đối tượng thì không nên dùng struct làm gì nữa.

  7. #7
    Ngày gia nhập
    06 2007
    Nơi ở
    Hà Nội
    Bài viết
    361

    struct để chứa thông tin chương trình thì hay vì nó tốc độ truy suất nhanh hơn mấy lần lận (hôm nọ có test rồi)
    Blog tổng quan kiến thức về viễn thông : http://tongquanvienthong.blogspot.com/

    mSPDict từ điển android hỗ trợ liên kết tra trên các trình đọc sách điện tử và tra sách giấy thông qua camera
    http://www.tinhte.vn/threads/691731/

  8. #8
    Ngày gia nhập
    01 2009
    Bài viết
    89

    Diểm quan trọng nhất, theo mình, để phân biệt giữa struct và class là struct là value type còn class là reference type.

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

    Có ai có thể cho mình ví dụ cụ thể (1 đoạn code C#) - Mình vẫn chưa hiểu rõ tại sao class lại thuộc ref type còn struture lại thuộc value type - Mình là dân C , mới nhập cư sang C# đc vài hôm , mong moi người chỉ giáo

  10. #10
    Ngày gia nhập
    07 2011
    Bài viết
    16

    Trích dẫn Nguyên bản được gửi bởi DKhanh Xem bài viết
    Struct và class khác nhau thế nào thì đã có rất rất nhiều tài liệu hay các chủ đề trên 4rum nói rồi.

    Theo msdn thì struct gần giống với class, có các điểm khác nhau sau đây:
    • - Struct không hỗ trợ việc thừa kế (nhưng có thể thực thi giao diện)
    • - Không thể khai báo hàm khởi tạo hay hàm huy mặc định (không đối số). Nếu khai báo hàm khởi tạo có đối số thì phải khởi tạo giá trị cho tất cả các field của nó.
    • - Cũng không thể khai báo và khởi tạo ngay các field.
    • - Cấu trúc là một khiểu giá trị (nó thừa kế từ ValueType) (còn class là kiểu tham chiếu)
    • - Khi truyền struct vào phuơng thức, nó được truyền theo giá trị chú không như class là truyền tham khảo.


    Theo mình khi đã học lên hướng đối tượng thì không nên dùng struct làm gì nữa.


    Nếu bạn để public trong class thì truy xuất được thôi, nhưng nói chung là không đúng OOP.
    Bạn giải thích rất chi tiết, ngoài ra còn có một số điểm khác nhau mà người lập trình thường ít quan tâm đó là việc cấp phát bộ nhớ cho struct và class trong C# khác nhau. Struct được cấp phát bộ nhớ trên stack còn class thì được cấp phát bộ nhớ trong heap. Và hình như là có điểm khác nhau khác liên quan đến constructor (hình như là struct không có constructor mặc định), mình không nhớ rõ lắm.

    Vì theo lý thuyết OOP thì không đề cập rõ ràng sự khác nhau của struct và class nên trong C++ chúng chỉ khác nhau về giá trị mặc định của phạm vi các thuộc tính. Nhưng ở mức độ của ngôn ngữ lập trình tham chiếu C# đã làm rất tốt, struct là được xem như là một kiểu dữ liệu, thường dùng để đóng gói các thuộc tính và một số methods đơn giản, mà đối với việc truyền dữ liệu thì những gói như vậy lúc nào cũng rất cần thiết, lúc này, class mới chính là đối tượng thực sự

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

  1. Algorithm Cách sử dụng class lồng nhau trong C#
    Gửi bởi quykiem1985 trong diễn đàn Thắc mắc lập trình C#
    Trả lời: 5
    Bài viết cuối: 02-10-2012, 08:57 PM
  2. Tạo class Grid Layout cho CSharp
    Gửi bởi chuong01 trong diễn đàn Dự án & Source code C#, ASP.NET
    Trả lời: 4
    Bài viết cuối: 21-03-2011, 11:52 PM
  3. Sử dụng Class ở 2 thư mục khác nhau trong ASP
    Gửi bởi dangbk trong diễn đàn Thắc mắc lập trình ASP.NET
    Trả lời: 2
    Bài viết cuối: 16-01-2011, 12:28 PM
  4. những thắc mắc về cấu trúc lệnh trong class
    Gửi bởi hardlovebee21 trong diễn đàn Thắc mắc lập trình C/C++/C++0x
    Trả lời: 3
    Bài viết cuối: 04-04-2009, 11:07 AM
  5. Lập trình C++ | Ép kiểu dữ liệu cấu trúc và class trong C++
    Gửi bởi thaothao trong diễn đàn Thắc mắc lập trình Visual C++
    Trả lời: 8
    Bài viết cuối: 22-06-2007, 12:25 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