Về cách biến được lưu trữ trong RAM, sự khác biệt giữa "int? X = 0" và "int? X = null" là gì?


Câu trả lời 1:

Loại nullable sẽ có một số loại trường bổ sung cho biết giá trị có hợp lệ hay không. Có vẻ như ví dụ của bạn là trong C #. Trong trường hợp này, int? là tốc ký cho System.Nullable . System.Nullable là một loại chung bao bọc một T với một trường bool phụ, HasValue. Trường bool bổ sung đó sẽ được lưu trữ trong bộ nhớ cùng với lưu trữ cho T. Cú pháp được thêm vào trong C # cho các loại giá trị nullable ẩn các hành động cơ bản sử dụng trường.

Về mặt khái niệm, mã trông như thế này:

int? x = 0; // Dịch sang
x.Giá trị = 0;
x.HasValue = đúng;

int? x = null; // dịch sang
x.HasValue = sai;

Trong mọi trường hợp trong đó tất cả các mẫu bit của loại giá trị là hợp lệ, ví dụ: số nguyên, ngôn ngữ sẽ cần thêm một số loại trường hoặc chỉ báo bổ sung để hiển thị xem có giá trị hợp lệ hay không nếu biến đó được coi là null. Về lý thuyết, nếu trình biên dịch biết rằng một số mẫu bit không phải là giá trị hợp lệ, nó có thể sử dụng một trong các mẫu không hợp lệ để chỉ ra giá trị null và không sử dụng bất kỳ lưu trữ bổ sung nào. Trong thực tế, điều này dường như là không thể, vì vậy bạn sẽ luôn thấy một phần nào đó của bộ nhớ được sử dụng.

Nullable Struct (Hệ thống)


Câu trả lời 2:

Nó hoàn toàn phụ thuộc vào cách ngôn ngữ lập trình được thực hiện. Cùng một ngôn ngữ có thể được thực hiện theo nhiều cách khác nhau tùy thuộc vào phần cứng và trình biên dịch cụ thể.

Phải nói rằng, trong nhiều ngôn ngữ, biến xác định một vị trí bộ nhớ cụ thể nơi lưu trữ dữ liệu thực tế. nếu biến có giá trị, thậm chí bằng 0, vị trí sẽ được đặt. Nếu nó là null, vị trí sẽ được đặt thành một giá trị vô nghĩa, bằng không hoặc ngược lại.


Câu trả lời 3:

Nó hoàn toàn phụ thuộc vào cách ngôn ngữ lập trình được thực hiện. Cùng một ngôn ngữ có thể được thực hiện theo nhiều cách khác nhau tùy thuộc vào phần cứng và trình biên dịch cụ thể.

Phải nói rằng, trong nhiều ngôn ngữ, biến xác định một vị trí bộ nhớ cụ thể nơi lưu trữ dữ liệu thực tế. nếu biến có giá trị, thậm chí bằng 0, vị trí sẽ được đặt. Nếu nó là null, vị trí sẽ được đặt thành một giá trị vô nghĩa, bằng không hoặc ngược lại.


Câu trả lời 4:

Nó hoàn toàn phụ thuộc vào cách ngôn ngữ lập trình được thực hiện. Cùng một ngôn ngữ có thể được thực hiện theo nhiều cách khác nhau tùy thuộc vào phần cứng và trình biên dịch cụ thể.

Phải nói rằng, trong nhiều ngôn ngữ, biến xác định một vị trí bộ nhớ cụ thể nơi lưu trữ dữ liệu thực tế. nếu biến có giá trị, thậm chí bằng 0, vị trí sẽ được đặt. Nếu nó là null, vị trí sẽ được đặt thành một giá trị vô nghĩa, bằng không hoặc ngược lại.


Câu trả lời 5:

Nó hoàn toàn phụ thuộc vào cách ngôn ngữ lập trình được thực hiện. Cùng một ngôn ngữ có thể được thực hiện theo nhiều cách khác nhau tùy thuộc vào phần cứng và trình biên dịch cụ thể.

Phải nói rằng, trong nhiều ngôn ngữ, biến xác định một vị trí bộ nhớ cụ thể nơi lưu trữ dữ liệu thực tế. nếu biến có giá trị, thậm chí bằng 0, vị trí sẽ được đặt. Nếu nó là null, vị trí sẽ được đặt thành một giá trị vô nghĩa, bằng không hoặc ngược lại.