2013-07-20 29 views

Trả lời

20

Đâ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.

+0

Để 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. –

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