Tôi đang đọc lên trên mảng C# vì vậy câu hỏi của tôi là ban đầu trên mảng.Việc khai báo và instantiating một mảng C# thực sự có ý nghĩa gì?
Tuyên bố một mảng thực sự có ý nghĩa gì? Tôi biết bạn khai báo một biến kiểu mảng. Khi tôi có những điều sau đây, những gì đang thực sự xảy ra?
int[] values;
Có trong bộ nhớ vào thời điểm được khai báo không? Nếu không thì nó ở đâu? Là mảng thực sự tạo ra ở đây?
Sau đó, tôi đi và nhanh chóng một mảng và khởi nó với một số giá trị như:
int[] values = new int[] { 1, 2, 3 };
Điều này thực sự đi và tạo mảng bây giờ? Tôi đã đọc rằng mảng được tạo ra khi chúng được khai báo, những người khác nói rằng mảng được tạo ra khi chúng được khởi tạo. Tôi đang cố gắng để có được thuật ngữ của tôi đúng.
Tương tự với biến số nguyên. Nếu tôi có:
int value;
và
int value = 1;
Khi được int tạo? Khi nào nó được thêm vào bộ nhớ?
Xin lỗi vì câu hỏi ngớ ngẩn. Tôi hiểu khái niệm này nhưng muốn biết kỹ thuật đằng sau hậu trường của mảng.
Nếu bạn sử dụng nó theo nghĩa đen, từ khóa 'new' không cần thiết để tạo một đối tượng mảng , bạn cũng có thể viết một cái gì đó như 'int [] values = {1, 2, 3};'. Mặc dù bạn có thể xem đó chỉ là một lối tắt cho cú pháp đầy đủ với 'new'. – svick
@Hans: Việc khai báo tham chiếu mảng có chiếm bất kỳ bộ nhớ nào không? Hoặc chỉ khi mảng được tạo ra? –
Nó có kích thước của một con trỏ. 4 byte trong quy trình 32 bit, 8 byte trong quy trình 64 bit. Dung lượng cho tham chiếu tuân theo các quy tắc giống như quy tắc cho giá trị loại giá trị. –