Có lý do cụ thể nào để sử dụng kiểu C++ của dấu hai chấm '::' không? Tại sao không sử dụng một dấu chấm đơn giản như C#?Tại sao PowerShell sử dụng dấu hai chấm (::) để gọi các phương thức tĩnh của một lớp .NET?
Trả lời
Đây là câu hỏi dành cho Windows PowerShell đang hoạt động.
Toán tử :: là trình truy cập thành viên tĩnh. Trong khi các dấu phẩy các toán tử truy xuất các toán tử, toán tử dấu hai chấm truy cập các thành viên tĩnh trên một lớp, như trường hợp với phương thức join trong ví dụ ở cuối phần cuối cùng. Các toán hạng trái đến accessor thành viên tĩnh được yêu cầu để trở thành một kiểu hoặc một loại đen hoặc một biểu thức trả về một kiểu như bạn thấy ở đây:
PS (1) > $t = [string] PS (2) > $t::join('+',(1,2,3)) 1+2+3 PS (3) >
Nhóm nghiên cứu thiết kế ngôn ngữ đã chọn để sử dụng một nhà điều hành riêng cho truy cập các phương pháp tĩnh vì cách thức các phương pháp tĩnh được truy cập . Đây là vấn đề. Nếu bạn đã có một loại MyModule với một thuộc tính tĩnh được gọi là Module, thì biểu thức
[MyModule].Module
là mơ hồ. Điều này là do cũng có một mô-đun thành viên cá thể trên thể hiện System.Type thể hiện loại MyModule. Bây giờ bạn không thể cho biết thành viên của cá thể “Mô-đun” trên System.Type hay “Mô-đun” thành viên tĩnh trên MyModule sẽ được truy lục. Bằng cách sử dụng toán tử dấu hai chấm , bạn xóa sự mơ hồ này.
Note
ngôn ngữ khác có được xung quanh sự nhập nhằng này bằng cách sử dụng typeof() điều hành. Sử dụng typeof() trong ví dụ này, typeof (My Module) .Module truy xuất thuộc tính cá thể trên đối tượng Type và MyModule.Module truy xuất thuộc tính tĩnh được lớp MyModule thực hiện.
Bruce Payette (2011-08-02 16: 22: 31.490000-05: 00). Windows PowerShell trong hành động, Second Edition (Kindle Locations 4494-4507). Manning Ấn phẩm. Kindle Edition.
- 1. Tại sao dấu chấm than được sử dụng trong các phương thức của Ruby?
- 2. Tại sao các phương thức của lớp Toán tĩnh?
- 3. Gọi phương thức tĩnh chung trong PowerShell
- 4. Làm thế nào để gọi phương thức tĩnh trong PowerShell
- 5. Tại sao các lớp tĩnh được sử dụng?
- 6. Tại sao JavaMail Transport.send() là một phương thức tĩnh?
- 7. . vs :: (dot vs đúp dấu hai chấm) để gọi một phương pháp
- 8. C#: Làm thế nào để gọi một phương thức tĩnh của một lớp cơ sở từ một phương thức tĩnh của một lớp dẫn xuất?
- 9. Tại sao '{' ném một NullReferenceException trong một phương thức tĩnh?
- 10. AS3: gọi phương thức lớp tĩnh - tên lớp và phương thức là các chuỗi
- 11. Lớp nào đã gọi phương thức tĩnh của tôi?
- 12. Tại sao các lớp tĩnh không có các phương thức và biến không tĩnh?
- 13. Lấy MethodInfo của phương thức tĩnh của một lớp tĩnh
- 14. gọi một phương thức tĩnh bên trong một lớp học?
- 15. Định dạng chuỗi PowerShell: Tại sao ký tự dấu hai chấm khiến giá trị của biến của tôi bị trống?
- 16. Tại sao lại sử dụng các phương thức trợ giúp tĩnh trong Java?
- 17. Thời điểm sử dụng "" (khoảng trắng) và thời điểm sử dụng. (dấu chấm) khi gọi các phương thức trong Scala?
- 18. C# lớp tĩnh tại sao sử dụng?
- 19. Gọi phương thức tĩnh trên một lớp học?
- 20. Tại sao phương thức tĩnh Tạo tồn tại?
- 21. Tại sao việc gọi một phương thức tĩnh được bảo vệ trong các lớp dẫn xuất được cho phép?
- 22. Gọi phương thức tĩnh sử dụng phản chiếu
- 23. Cách tự động gọi phương thức của lớp trong .NET?
- 24. nguồn gốc lớp gọi phương thức tĩnh của lớp cơ sở trong phương pháp tĩnh của riêng mình
- 25. Điểm của một phương thức tĩnh trong một lớp không tĩnh là gì?
- 26. Tại sao sử dụng URL chứa dấu hai chấm được coi là "yêu cầu nguy hiểm"?
- 27. Cách Groovy để tự động gọi một phương thức tĩnh
- 28. Sử dụng Powershell để truy cập lớp tĩnh trong một lớp tĩnh
- 29. Sử dụng dấu hai chấm (: :) trong #define
- 30. Gọi các phương thức lớp cha mẹ
Để hoàn thành: điều này khác với C++ trong đó toán tử bốn chấm phân giải phạm vi/không gian tên. –