2009-02-19 64 views
7

Với các tính năng mới trong .NET 3.5 (như var, Lambda, linq, vv), và nhiều hơn nữa trên đường đi, chúng ta có thể kết luận rằng C# không chỉ gõ ngôn ngữ tĩnh mà còn Tự động gõ?C# Ngôn ngữ được gõ động

Tại sao hay Tại sao không?

Chỉnh sửa # 1

Như nhiều áp phích so với tuyên bố, .net 4.0 sẽ thêm động lực type-Ness với ngôn ngữ. Điều này sẽ làm chậm ngôn ngữ?

Với mỗi bản phát hành, csharp lấy nội dung từ các ngôn ngữ khác nhau. Trong chừng mực .Net1.1, cha ông chúng ta không có ý định thậm chí làm cho nó ngôn ngữ chức năng ....

Chỉnh sửa # 2

Tôi nghĩ rằng nhiều bạn hiểu lầm câu hỏi; như tôi đang nói đến ngôn ngữ C# tổng thể, bao gồm cả bản phát hành sắp tới 4.0. Do đó, thật công bằng khi nói rằng ngôn ngữ được nhập động ...

+0

Tốt - bạn hoàn toàn mới phát minh ra từ 'động'. Tôi thích nó. –

+0

+1 đây là một sự khác biệt quan trọng - câu hỏi hay! –

Trả lời

12

C# không được nhập động - tất cả các loại được suy luận tĩnh trong các ví dụ bạn đã đề cập. Phiên bản tiếp theo của C# sẽ bao gồm một số tính năng động mặc dù để làm việc với COM và ngôn ngữ thực sự năng động.

[Chỉnh sửa # 1] Có tính năng động mới của C# sẽ chậm hơn vì mọi thứ sử dụng tính năng này sẽ yêu cầu kết buộc muộn. Tuy nhiên, nó sẽ chỉ làm chậm ứng dụng của bạn nếu bạn sử dụng nó - nó không phải là một thay đổi đối với ngôn ngữ chính. C# 4 sẽ là một ngôn ngữ gõ tĩnh với khả năng làm việc với các kiểu bị ràng buộc trễ.

[Chỉnh sửa # 2] Không C# 4 sẽ không phải là ngôn ngữ được nhập động. C# 4 giới thiệu một loại dynamic mới sẽ thay thế các ràng buộc muộn trên các thành viên kiểu thay vì kiểm tra kiểu tĩnh. Khả năng động sẽ chỉ khả dụng trên các loại động này. Hệ thống kiểu cơ bản của C# không thay đổi.

2

Không, nó vẫn tĩnh đánh máy, var/lambda/LINQ tất cả sử dụng inferance bởi trình biên dịch để loại được biết đến tại thời gian biên dịch, năng động/vịt gõ sẽ đi kèm với C# 4.0

+0

nó nên đọc: "Không, nó vẫn được gõ tĩnh, var/lambda/linq tất cả sử dụng inferance bởi trình biên dịch vì vậy loại được biết đến tại ** thời gian biên dịch **, gõ động/vịt sẽ đi kèm với C# 4.0" –

1

động gõ ?! Không. Về mặt kỹ thuật, C# là một ngôn ngữ được gõ tĩnh. Nó có khả năng điều khiển phương thức động thông qua các dịch vụ phản chiếu CLR do .NET runtime cung cấp (đã có sẵn từ v1.0 và không có gì để làm với các tính năng .NET 3.5, các tính năng C# 3.0 vẫn được gõ tĩnh). C# 4.0 sẽ có tính năng nhập động thực sự.

0

Người nhận xét: Bạn có rằng chắc chắn rằng các loại động có thể dễ dàng được chứa không? Tôi có cảm giác rằng hiệu ứng của họ sẽ lan rộng.

+0

Thú vị , theo cách nào bạn nghĩ rằng các hiệu ứng sẽ lan truyền? –

+0

Trong nháy mắt, tôi nghĩ rằng nó có thể ảnh hưởng đến chữ ký phương pháp hoặc sự lựa chọn quá tải. Tuy nhiên, sẽ rất thú vị khi nhìn lại câu hỏi này trong một vài năm nữa. – brianary

Các vấn đề liên quan