Các hàm địa phương
Định nghĩa của chúng ta về CountToTen ở trên đặt nó vào bên trong phương thức main. Code map dưới đây
minh họa xắp sếp này:
Cho đến bây giờ, chúng ta đã chỉ nhìn thấy các phương thức cái sống trực tiếp trong một class. Ví dụ,
WriteLine sống trong Console, và Main sống trong Program. Code map này thể hiện rằng các phương thức
cũng có thể được định nghĩa bên trong các phương thức khác.
Một khi chúng ta bắt đầu tạo các classes (mức 18), gần như tất cả các phương thức của chúng ta sẽ sống
trong một class. Cho đến lúc đó, chúng ta có thể định nghĩa các phương thức bên trong phương thức main
của chúng ta.
Trong khi chúng ta đang trên chủ đề, hãy nhận chính xác trong thuật ngữ của chúng ta: các lập trình
viên C# thường sử dụng từ method và function đồng nghĩa. Nhưng có một vài khác biệt tinh vi. Chính thức
thì, bất cứ khối code gọi được sử dụng lại là một hàm. Một hàm cũng là một phương thức nếu nó là một
thành viên của một class. Nên về mặt kĩ thuật, Main là một phương thức, nhưng CountToTen thì không. Các
hàm cái được định nghĩa bên trong các hàm khác được biết đến như là các hàm địa phương. Nên CountToTen
là một hàm địa phương, nhưng Main thì không. Trong trò chuyện thân mật, các lập trình viên C# sẽ sử dụng
cả method hay function trao đổi (với method là phổ biến hơn) và chỉ trở nên chính thức hay cụ thể khi
khác biệt thành vấn đề. Ví dụ, ai đó có thể nói “I don’t think that should be a local function. I think
it should be an actual method.”
Một hàm địa phương có thể sống bất cứ đâu bên trong phương thức chứa của nó. Bạn có thể đặt chúng tại
đinh, ở trên các phát biểu khác của bạn, tại đáy, sau tất cả các phát biểu khác của bạn, nơi nào đó
ở giữa hay rải rác qua phương thức. Trình dịch không quan tâm chúng đi đâu. Trình dịch rút ra chúng
và cung cấp chúng các tên hơi khác đằng sau cánh gà, nên nó không quan tâm về trật tự. Vì chúng có thể
đi bất cứ đâu, sử dụng cái đó cho lợi thế của bạn, và đặt chúng tại nơi cái làm code dễ hiểu nhất. Cho
phương thức main của chúng ta, tôi cảm thấy nó có ý nghĩa nhất để đặt những cái này sau mọi thứ khác,
để rằng là cái gì tôi sẽ làm trong các học phần.

