2012-04-13 59 views
42

Tôi sẽ thông qua một số mã VB cũ và tôi chạy vào định nghĩa hàm như thế này -Sự khác nhau giữa Sub và Function trong VB6 là gì?

Private Function ExistingCustomer(Index As Integer, Customer As String) As Integer 

Private Sub cmdCustomerList_Click() 

sự khác biệt là gì?

+0

trong excel chỉ 'Dự bị' là có sẵn để giao cho hình dạng trong MsgBox vĩ mô assign. – SAm

Trả lời

98

Giá trị trả về hàm, Sub không. Nó đơn giản mà.

+0

Ok. Cảm ơn câu trả lời. – CodeBlue

+8

+1. Sổ tay [nói] (http://msdn.microsoft.com/en-us/library/aa266305 (v = vs.60) .aspx): "Giống như thủ tục Hàm, thủ tục con là một thủ tục riêng biệt có thể thực hiện đối số, thực hiện một loạt các câu lệnh và thay đổi giá trị của các đối số của nó. Tuy nhiên, không giống như một thủ tục hàm, trả về một giá trị, một thủ tục con không thể được sử dụng trong một biểu thức. " Có vẻ hơi dài, nhưng đó là bởi vì họ đang nói cho bạn một số thông tin bổ sung về những gì một Sub và chức năng có thể làm. – MarkJ

0

chức năng trong vb

  • một chức năng phải trả lại một số giá trị/s
  • Cú pháp: chức năng riêng fun_name (argument/s (không bắt buộc)) như return_type (số nguyên, chuỗi ..) giá trị trở lại cuối chức năng
  • fun_name (đối số (không bắt buộc)) là đủ cho chức năng gọi

phụ trong vb

  • một phụ không cần phải được trả lại bất kỳ giá trị/s
  • Cú pháp: phụ sub_name tin (argument/s (không bắt buộc))

    end sub

  • sub_name (arguments (không bắt buộc)) là đủ cho hàm gọi
4

Trong hàm chúng tôi có thể trả về giá trị dưới dạng boolean, chuỗi và các kiểu dữ liệu dữ liệu khác.

nhưng phụ không trả lại bất kỳ điều gì. nó chỉ thực thi mã và hướng dẫn mà chúng tôi cung cấp. Đây cũng được coi là phương pháp

Phụ cũng được sử dụng trong các sự kiện của kiểm soát và những sự kiện này cũng không trả về bất kỳ giá trị nào.

ví dụ sự kiện bấm vào một nút lệnh: Private sub cmd_click()

end sub

11

Một chức năng cũng có thể được sử dụng trong một biểu thức. Một chương trình con không thể. Chức năng có thể cho phép đọc mã của bạn tốt hơn so với chương trình con.

Dưới đây là một ví dụ về cách một chức năng có thể làm tăng khả năng đọc:

If AccountIsLocked("JJones") then Msgbox("This account is locked") 

chức năng này sẽ được xác định ở đâu đó

public function AccountIsLocked(UserId as string) as boolean 
    dim usr = uow.AccountRepository.UserInfo(UserId) 
    return usr.locked 
end function 

Dưới đây là ví dụ tương tự nhưng được mã hóa với một chương trình con:

CheckIfAccountLocked("JJones") 

và ở nơi khác, tiểu mục này được xác định:

public sub CheckIfAccountLocked(UserId) 
     if uow.AccountRepository.UserInfo(UserId).locked then 
      msgbox("Account is locked") 
     end if 
end sub 

Cũng lưu ý rằng việc kiểm tra giá trị được tách biệt với hành động - điều này góp phần vào việc phân tách nhiệm vụ. Chức năng sẽ cho vay lại khả năng sử dụng lại.

Với VB6 có một số quy tắc lẻ điều chỉnh dấu ngoặc đơn. Nếu không có tham số cho một phụ thì dấu ngoặc đơn là không cần thiết (tôi nghĩ rằng Visual Studio có thể loại bỏ dấu ngoặc đơn). Một cách xung quanh điều này là thêm từ khóa "Gọi" trước phụ của bạn.

Call CheckIfAccountLocked() 

vs

CheckIfAccountLocked 
+0

Câu trả lời hay nhất tại đây – Hydro

3

Họ là cả hai phần để viết mã tuy nhiên một chức năng phải trả lại một giá trị. Ví dụ, nếu bạn có một chương trình mà trong đó một thủ tục toán học phức tạp cần phải được thực hiện một số lần bạn chỉ cần thực hiện một hàm và có mã toán phức tạp trong đó và bất kỳ lúc nào bạn cần thực hiện phép tính, bạn chỉ cần gọi hàm . Hy vọng điều này đã giúp không chắc chắn nếu tôi giải thích nó tốt.

2

Sự khác biệt giữa Phụ và Hàm trong VB6 là gì?

"sub" có thể thực hiện một số hành động. "phụ" không trả về giá trị nào.

Ví dụ:

Form_Load()

"chức năng" cũng có thể thực hiện một số hành động nhưng nó cũng trả về một số giá trị đến điểm mà từ đó nó được gọi. có nghĩa là, "Chức năng trả về một giá trị, thường dựa trên một biến"

Ví dụ:

Val(), FormatPercentage().

-1

Chức năng giữ dữ liệu và mã. Nhưng một chương trình con chỉ chứa mã, nhưng không chứa dữ liệu.

-1
  1. Cú pháp của hàm sẽ là Chức năng ... Chức năng kết thúc và cho Phụ sẽ là Chi ... End Sub.
  2. Chức năng có thể hoặc không có các đối tượng nhưng phụ không có các đối tượng
  3. Chức năng đang Tái sử dụng được nơi Sub không
  4. Chức năng có thể trở lại thung lũng nhưng phụ doesnt
  5. Chức năng có thể có kho lưu trữ đối tượng nhưng phụ không có
  6. Gia hạn chức năng là .qfl nơi cho phụ nó .vba
Các vấn đề liên quan