2010-03-02 27 views
37

Tại sao điểm vào phương pháp chính trong hầu hết các chương trình C# tĩnh?Tại sao điểm vào phương pháp chính trong hầu hết các chương trình C# tĩnh?

+0

Đây là một câu hỏi hay, có thể không có câu trả lời thực sự thỏa đáng. Rất nhiều thứ chạy trước khi Main được gọi, và chúng có thể bao gồm nhiều hàm tạo đối tượng như bạn muốn. Nhưng vẫn còn, tôi nghĩ rằng nếu các nhà xây dựng cho các đối tượng chương trình được một ngoại lệ bộ nhớ, sau đó máy tính của bạn là có một * thực sự * ngày xấu! –

+5

Bởi vì bạn không muốn làm hoảng sợ các lập trình viên C++ và Java quá nhiều. – zaratustra

Trả lời

59

Để gọi phương thức thể hiện, bạn cần một phiên bản của đối tượng. Điều này có nghĩa là để bắt đầu chương trình của bạn, CLR sẽ cần tạo một cá thể nói Program để gọi phương thức Main. Do đó các nhà xây dựng của Program sẽ chạy trước Main mà đánh bại mục đích của việc có một hoàn toàn chính.

+2

+1 Giải thích rõ ràng. –

+9

Nhưng điều này có nghĩa là hàm tạo tĩnh vẫn được gọi? –

+3

@Yuriy, đúng vậy. Nó được gọi cụ thể như trong phần 10.11 của thông số ngôn ngữ C#. Tôi không biết chính xác lý do tại sao quyết định này được thực hiện (có thể đã bị buộc phải từ cấp CLR) – JaredPar

1

Vì nếu không nó sẽ phải tạo một đối tượng và chạy hàm tạo có thể gây ra các tác dụng phụ tiêu cực.

1

Làm cách nào bạn có thể tạo cá thể lớp học của mình trước chính bằng cách khác?

+3

Giống như cách bạn gọi chính. Bạn không - thời gian chạy thực hiện rất nhiều thứ trước khi chính, tải các lớp và tạo các đối tượng. –

4

Khái niệm bạn chỉ có một phiên bản tĩnh. Và một phương pháp tĩnh ánh xạ tốt đến thành ngữ của một điểm nhìn chằm chằm duy nhất cho một chương trình. Các nhà thiết kế ngôn ngữ có thể đã tạo ra một lớp chương trình đặc biệt để sử dụng với một phương thức chính nhưng đã chọn tạo một hàm tĩnh đơn lẻ làm điểm vào. Trên một số cấp độ của nó thực sự chỉ là một sự lựa chọn thiết kế.

0

Phương pháp tĩnh có thể được thực hiện mà không cần tạo một cá thể. Theo quy ước, họ có phương thức main làm phương thức mặc định để gọi.

0

.NET runtime gọi phương thức Main. (Lưu ý: Chính cũng có thể được gọi từ nơi khác, ví dụ: từ mã Main() trong một phương thức khác của ExampleClass.) Từ khóa static làm cho phương thức có thể truy cập được mà không cần instance của ExampleClass. Vì vậy, phương pháp chính là một điểm vào và phải được khai báo tĩnh.

Nếu không, chương trình sẽ yêu cầu một trường hợp, nhưng bất kỳ trường hợp nào sẽ yêu cầu một chương trình.

Để tránh điều đó irresolvable circular dependency chính được sử dụng như một điểm vào


tham khảo: http://en.wikipedia.org/wiki/C_Sharp_(programming_language

16

Tôi muốn biến những câu hỏi xung quanh. Lợi ích hấp dẫn của việc thực hiện tính năng cho phép chính là một phương pháp thể hiện là gì? Tính năng đắt tiền; nếu không có lợi ích hấp dẫn, chúng sẽ không được triển khai.

Bạn có lý do thực sự hay không tại sao Chính nên được phép là phương pháp thể hiện?

-3

đối với mọi đối tượng của lớp chứa phương pháp chính và các biến và phương pháp khác, có các bản sao riêng biệt của từng biến và phương thức chứa tất cả các đối tượng. đối tượng chúng ta phải tạo phương thức chính là tĩnh.

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