nếu Loại giá trị và Loại tham chiếu từ Loại đối tượng là loại tham chiếu, thì loại giá trị là loại giá trị và loại tham chiếu là tham chiếu khi tất cả đều đến từ loại giới thiệu.Loại giá trị loại tham chiếu Vs - Loại đối tượng C#
7
A
Trả lời
12
Về cơ bản, nó là một cheat ;-p
Bất kỳ struct
(ví dụ: bất cứ điều gì được thừa kế từ ValueType
) được xử lý bằng giá trị kiểu ngữ nghĩa. Nhưng có chuyển đổi quyền anh là thành object
khi cần thiết; có nghĩa là nếu bạn bỏ một struct
đến một số object
, nó sẽ tạo một đối tượng đặc biệt (trên vùng được quản lý) chứa dữ liệu (như một bản sao) từ giá trị của bạn *.
Phiên bản đóng hộp là kiểu tham chiếu. Bạn có thể unbox này (bằng cách đúc) trở lại phiên bản struct
, mà đảo ngược này (sao chép dữ liệu nhân bản từ đối tượng trên đống vào giá trị địa phương của bạn).
* = trừ khi nó là một sản phẩm nào Nullable<T>
, mà hộp để null
; tương tự, null
hộp thư đến số trống Nullable<T>
.
Các vấn đề liên quan
- 1. đối tượng loại tham chiếu loại giá trị trong javascript
- 2. Đối tượng có phải là loại tham chiếu hoặc loại giá trị không?
- 3. Chuyển các loại tham chiếu theo giá trị trong C#
- 4. Giá trị và các loại tham chiếu
- 5. Sự khác nhau giữa các loại giá trị và loại tham chiếu trong C# là gì?
- 6. C# - trình bao bọc tham chiếu cho loại giá trị
- 7. C# generics: loại tham chiếu so với giá trị
- 8. Loại có thể là loại tham chiếu và loại giá trị cùng một lúc không?
- 9. Chỉ định giá trị mặc định cho loại tham chiếu
- 10. Loại tham chiếu trực tiếp trên heap, loại giá trị trực tiếp trên ngăn xếp
- 11. Bắt buộc loại giá trị (chung) là tham chiếu
- 12. Loại đối tượng trong Java và mảng tham chiếu
- 13. Lợi ích của các loại giá trị trên các loại tham chiếu?
- 14. Chuyển đổi loại C# theo tham chiếu thành loại không khớp theo tham chiếu
- 15. Tại sao tôi không thể sử dụng loại tham chiếu làm loại giá trị của loại vùng chứa?
- 16. Guid có được coi là loại giá trị hoặc loại tham chiếu không?
- 17. Xác định ràng buộc loại giao diện chung cho giá trị và loại tham chiếu
- 18. Trong C#, sử dụng các loại giá trị so với các loại tài liệu tham khảo
- 19. được loại đối tượng và gán giá trị phù hợp
- 20. giá trị loại bỏ mặc định từ một đối tượng
- 21. Giá trị không được khởi tạo so với giá trị null của các loại tham chiếu
- 22. Cách lấy loại tham chiếu?
- 23. Khi nào thì ràng buộc loại giá trị/tham chiếu có ích trong C#?
- 24. Tìm loại đối tượng trong C++
- 25. loại bỏ đối tượng khỏi mảng chỉ với tham chiếu của đối tượng
- 26. C# Loại đối tượng So sánh
- 27. Có thể tạo chu trình tham chiếu chỉ sử dụng các loại giá trị không?
- 28. Loại động của đối tượng
- 29. Các loại tham chiếu không thể null
- 30. Các loại tham chiếu có thể loại bỏ không?
Bạn có thể giải thích cho tôi hoặc chỉ ra một liên kết về cách ma thuật (gian lận) đang xảy ra không? tức là Struct là loại giá trị trong khi loại đối tượng tham chiếu – skjagini
@skjagini - đơn giản, trình biên dịch và thời gian chạy có thể dễ dàng nhận ra rằng một cái gì đó bắt nguồn từ 'ValueType' và xử lý nó khác ... Ngoài ra? ECMA335 –
+1 Mặc dù các ngôn ngữ như C# giả sử rằng cấu trúc đóng hộp là kiểu giá trị, trong phạm vi ruột của CLR, mỗi loại giá trị được quản lý có loại lớp tương ứng đóng gói một trường của loại giá trị tương ứng và kết thúc tất cả thành viên lĩnh vực đó. Ngay cả khi đặc tả ngôn ngữ C# gọi một loại giá trị như vậy, nó sẽ hoạt động như một kiểu tham chiếu. – supercat