01/10/2018, 16:33

Hàm Main trong C# tại sao được gán private?

Tình hình là em mới học C#, khi tạo project thì visual studio đã định sẵn cho em hàm Main như thế này:

static void Main(string[] args)

Tuy nhiên em rất ngạc nhiên khi được ReSharper khuyên nên thêm private vào?

private static void Main(string[] args)

Và thật sự là nó vẫn chạy được @@
Vậy cho em hỏi làm sao nó có thể chạy được hàm Main khi mà nó đang private vậy ạ?

Aragami1408 viết 18:35 ngày 01/10/2018

điều này quá đơn giản. Visual studio là IDE C# để phát triển phần mềm hoặc web. Trong khi ReSharper là IDE để viết ra những plugin cho visual studio chứ không liên quan đến việc phát triển phần mềm,… Vì vậy theo nghiệp vụ để như thế là phải

Kiii viết 18:49 ngày 01/10/2018

Điều khiến em thắc mắc ở đây là sao hàm main đã để ở private mà nó vẫn chạy được vậy ạ?

Bin bo viết 18:36 ngày 01/10/2018

1 - Có 2 cách viết để định nghĩa đầu vào - entry point của bất kỳ 1 chương trình C# nào là:
public/private static void/int Main(string[] args)
public/private static void/int Main()
CLR sẽ biết được Main là đầu vào dựa trên 2 kiểu viết trên. Nếu bạn muốn overload 1 hàm Main khác thì vẫn được nhưng CLR sẽ không coi hàm Main đó là entry point nên chương trình vẫn chạy bình thường. Vì vậy không quan trọng là bạn để public hay private.
2 - Còn với từ khóa public và private nên dùng thế nào thì mình nghĩ nó chỉ nằm ở phạm vi bạn sử dụng ứng dụng của mình.
Nếu bạn không áp dụng ứng dụng vào một ứng dụng khác thì nên để nó là private. Nên chứ không bắt buộc nhé

Văn Dương viết 18:40 ngày 01/10/2018

C# là ngôn ngữ bậc cao. private, public, protected,… chỉ có ý nghĩa với người lập trình. Khi compile ra nó biến thành ngôn ngữ khác và không còn khái niệm private, public… nên việc public hay không public không có liên quan gì đến việc có thể chạy chương trình hay là không.

Còn tại sao lại được gán private. Vì nó không cho gọi ở một nơi nào khác.
Tại sao lại static. Vì nó chỉ có 1 mà thôi. Hàm main chỉ có 1 và chỉ được gọi 1 lần khi chạy chương trình. Nếu nó public và có thể gọi nhiều nơi chắc chắn không được và không đúng logic.

Kiii viết 18:39 ngày 01/10/2018

Em cám ơn ạ, ban đầu em nghĩ private thì nó không thể truy cập từ bên ngoài nên em nghĩ thế quái nào mà nó chạy được hàm Main của mình

Trần Hoàn viết 18:43 ngày 01/10/2018

Phương thức Main thì để kiểu gì chả được.
Còn nó tạo mặc định mà không có public nghĩa là private rồi.

Bài liên quan
0