2009-04-03 41 views
6

Trong VB.NET trên một hàm boolean nếu bạn chạy một dòng Exit Function nó sẽ trả về false?Chức năng thoát có trả về false không?

+4

Đây là lý do tại sao tôi không thích VB :) Trong C# trình biên dịch buộc bạn phải trả lại sự bùng nổ. – cjk

+1

Trình biên dịch thực sự cho bạn biết là một cảnh báo (và/hoặc trực quan) nếu bạn không trả lại bất cứ điều gì một cách rõ ràng, tôi không hoàn toàn chắc chắn nếu nó có thể làm cho nó bắt buộc. –

Trả lời

9

Đó là chính xác, với sự báo trước rằng trong VB tên hàm cũng có thể là một biến mà được trả về. Nếu trước đó bạn đã đặt điều đó thành true, nó sẽ trả về true.


hoàn toàn hơn, trong VB.Net, nếu tôi có một hàm boolean Foo() được xác định như sau:

Public Function Foo() As Boolean 
    '... 

... cơ thể của chức năng đó có một biến ngụ ý cũng tên Foo phù hợp kiểu trả về của hàm — Boolean trong trường hợp này, nhưng Object nếu loại trả về bị bỏ qua (bạn nên sử dụng Option Strict, yêu cầu loại trả về). Biến được ngụ ý này được khởi tạo để sử dụng giá trị mặc định cho loại đó.

Nếu bạn không nhập Return một giá trị từ hàm, cho dù qua Exit Function hoặc đơn giản bằng cách đến cuối, biến ngụ ý này được trả về thay thế. Do đó, hàm Boolean sẽ trả lại False nếu bạn Exit Function sớm mà không thực hiện các thay đổi khác, bởi vì đó là giá trị mặc định trong biến được ngụ ý được sử dụng với hàm. Nhưng bạn cũng có thể đặt biến đó thành True trước tiên nếu bạn muốn và sau đó Exit Function sẽ làm cho biến đó trở lại True thay thế.

Những ngày này mọi người thường không sử dụng biến được ngụ ý, nhưng có những tình huống mà tại đó nó có thể giúp bạn tiết kiệm một vài dòng mã mà không tốn bất kỳ thứ gì rõ ràng.

+1

Có thể đây là vấn đề rõ ràng, nhưng điều này hoạt động trong VB vì biến đầu ra của hàm đó được bắt đầu sai và không trả về rõ ràng đó là biến được trả về – annakata

+0

Để rõ ràng, nếu tôi có hàm trả về kiểu dài, 'Exit Function' trả về giá trị mặc định (0). Hơn nữa, nếu, trong 'Hàm Foo() của tôi là Long', tôi' Quay lại Foo', thực ra, tôi đang trả về '0'. Chính xác? Tôi về mặt kỹ thuật có thể thay thế 'Exit Function' bằng' Return Foo'? – MetalPhoenix

2

Chừng nào bạn chưa thiết rằng chức năng True trước khi bạn thoát khỏi

3

Bất kể nó có hoạt động hay không (trình biên dịch chỉ đưa ra cảnh báo tham chiếu null), bạn vẫn nên trả về false, nếu chỉ để đọc được.

+0

Câu trả lời thực tế cho câu hỏi vẫn hữu ích nếu bạn muốn _clean up_ sử dụng 'Exit Function' như vậy. – Nyerguds

2

Tôi luôn thực hiện "Trả về true" hoặc "Trả về False" để thoát phương thức thay vì câu lệnh thoát.

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