2008-11-16 45 views
6

Tôi đã tự hỏi liệu có bất kỳ sự khác biệt nào giữa hai trình khởi tạo đối tượng mới khác nhau hay chỉ là cú pháp đường.New {object} vs {object} = new {object}

Vậy là:

Dim _StreamReader as New Streamreader(mystream) 

và khác nhau để:

Dim _StreamReader as Streamreader = new streamreader(mystream) 

Có sự khác biệt dưới mui xe? hoặc cả hai đều giống nhau không? Bạn thích sử dụng cái nào?

Trả lời

14

Trong VB.NET, chúng giống hệt nhau. Biến thể As New là kinh điển.

Trong VB6, ngữ nghĩa của chúng thực sự khác nhau (ngoài hình thức thực tế rõ ràng là VB6 không cho phép gán trong khai báo): biến thể As New sẽ tạo đối tượng không bao giờ có thể là Nothing. Thay vào đó, thời gian chạy sẽ đảm bảo rằng đối tượng luôn được khởi tạo đúng cách trước mỗi lần truy cập vào nó.

1

Tôi không phải là một anh chàng VB, nhưng theo như tôi có thể nói chúng tương đương. Theo MSDN's description of the Dim statement:

Nếu bạn không xác định kiểu dữ liệu, biến mất kiểu dữ liệu của initializer. Nếu cả kiểu dữ liệu lẫn kiểu khởi tạo , theo mặc định, kiểu dữ liệu là Kiểu dữ liệu đối tượng. Nếu bạn chỉ định cả kiểu dữ liệu và kiểu khởi tạo , kiểu dữ liệu của bộ khởi tạo phải được chuyển đổi thành kiểu dữ liệu.

Tôi sẽ không chuyển nhận xét về tùy chọn, vì tôi không sử dụng VB (trừ khi trả lời câu).

2

Các tuyên bố này giống hệt nhau. Cá nhân tôi thích cú pháp "Dim x as New" vì nó ngắn gọn hơn. Không có lý do gì để viết cùng một tên kiểu trong cùng một câu lệnh khi nó không tạo ra sự khác biệt có lập trình. Tất cả những gì bạn làm là giúp bạn dành nhiều thời gian hơn trên bàn phím :)