có sự khác nhau giữa cấu trúc trong C++ và cấu trúc trong C# không?là có một sự khác biệt giữa một struct trong c + + và một struct trong C#?
Trả lời
Trong C# bạn sử dụng cấu trúc để xác định loại giá trị (trái ngược với loại tham chiếu được khai báo bởi class
es).
Trong C++, cấu trúc giống với lớp có mức trợ năng mặc định là public
. Vì vậy, câu hỏi nên là: là cấu trúc trong C# khác với các lớp trong C++ và, có, chúng là: Bạn không thể lấy được từ C# structs, bạn không thể có các hàm ảo, bạn không thể định nghĩa các constructor mặc định, bạn không có destructors vv
Struct trong C# rất khác so với các lớp học, xem Structs vs Classes để biết thêm
Struct trong C++ là giống hệt nhau đến các lớp học, TRỪ rằng các thành viên là công khai theo mặc định. Ngoài ra, cấu trúc C++ có thể làm mọi thứ mà lớp C++ có thể làm.
Cấu trúc C# có thể có các hàm tạo - chúng không thể có một hàm tạo * mặc định *. –
Marc: Bạn đã phát hiện ra sai lầm cố ý của tôi ở đó, thực hiện tốt. . . p.s. Tôi đã sửa nó :) –
@Marc: Chúng luôn có một hàm tạo mặc định, bạn không thể định nghĩa một hàm dựng riêng của mình :-) – MartinStettner
Có.
struct trong C# là đồng bằng cũ, bởi giá trị, các kiểu dữ liệu (như trái ngược với các lớp học được bằng cách tham khảo và có ll những thứ OO)
struct trong C++ chỉ là lớp học mà là công khai theo mặc định.
Bạn đang cố gắng tương tác giữa C++ và C# được quản lý? Nếu vậy, có phần mở rộng cho C++ để cho phép điều này: xem link
Mã C# struct được quản lý, sẽ được giải phóng bởi rác C# khi không ai đề cập đến nó nữa. Destructor của nó được gọi là bất cứ khi nào người thu gom rác quyết định để làm sạch nó lên.
Cấu trúc C++ là một đối tượng không được quản lý mà bạn phải tự dọn dẹp. Đó là destructor được dự đoán được gọi là khi bạn xóa nó, hoặc nó đi ra khỏi phạm vi.
Cấu trúc C# không phải là đối tượng; chúng không phải * bản thân * tùy thuộc vào việc thu gom rác thải (trừ khi chúng là các trường trên một loại * là * rác được thu thập, tức là một lớp). C# structs không thể xác định một finalizer: "Error 1 Chỉ có loại lớp có thể chứa destructors" –
Điểm tốt về finalizer. Nhưng cấu trúc là các đối tượng tôi nghĩ: "MyStruct là đối tượng" trả về true. Và ai đó phải giải phóng bộ nhớ mà struct sử dụng; bộ thu gom rác sẽ làm điều đó, nếu cấu trúc nằm trên heap. – Andomar
- 1. C# mảng trong một struct
- 2. Sự khác nhau giữa cấu trúc mới (Struct) và & Struct {} trong Go là gì?
- 3. Mục đích của struct, typedef struct, trong C++
- 4. Sự khác biệt giữa cấu trúc trong C và C++
- 5. struct extern trong C
- 6. struct và typedef trong C so với C++
- 7. Trong C++, sự khác biệt giữa một phương pháp và một chức năng là những gì
- 8. Điều gì tốt là một con trỏ hàm bên trong một struct trong c?
- 9. Mặc định Struct khởi trong C++
- 10. Viết Struct vào một tập tin trong c
- 11. Sử dụng C Struct trong Objective C
- 12. lỗi malloc trong struct (C)
- 13. C struct bằng Python
- 14. Chuyển đổi C++ struct C#
- 15. C++: struct và mới từ khóa
- 16. C# Struct Generic Constructor
- 17. C/C++ nhận được kích thước struct
- 18. Cấu trúc của một C++ Object trong Memory Vs một Struct
- 19. Làm thế nào để khởi tạo một biến const bên trong một struct trong C?
- 20. C (++) struct buộc đệm thêm
- 21. Sự khác biệt giữa Barrier trong C# 4.0 và WaitHandle trong C# 3.0 là gì?
- 22. kích thước của struct trong C
- 23. C: typedef struct name {...}; VS typedef struct {...} tên;
- 24. C++ - Sự khác biệt giữa (*). và ->?
- 25. Sự khác biệt giữa một vòng loại và một công cụ sửa đổi trong C là gì?
- 26. mảng Một phần tử trong struct
- 27. Sự khác biệt giữa dài và int trong C#?
- 28. sự khác biệt giữa "ifndef" và "if! Defined" trong C?
- 29. gì C++ cú pháp struct "a: b" có nghĩa là
- 30. Sự khác biệt giữa các lớp C# một phần và các mục tiêu C?
Điểm của Martin về cấu trúc C# là loại giá trị khá quan trọng đối với hiệu suất vì chúng phải được đóng hộp và không được đóng hộp cho một số thao tác. Vui lòng đọc "boxing" nếu bạn phải lo lắng về hiệu suất. – dss539