C和java里面就没有所谓函数和过程的区分:它们都是函数。在我的理解中,函数和过程的区别仅在于函数有返回值,而过程没有。

过程的定义是这样的:

sub MySub()
end sub


函数要有返回值,所以定义的时候要说明返回值的类型。函数的定义是这样的:

function MyFunction() as Object'as子句标明了函数返回值的类型
end function


过程和函数可以带参数。比如下面这个过程:

public sub AddOne(Byval n as Integer'n是传入的参数,函数当中可以对n进行操作。
    Console.WriteLine(n + 1)
end sub

调用这个过程的时候直接写:
AddOne(3)

就可以了。

完整的代码如下,你可以运行一下:

imports System

public module MyModule
    
sub Main
        AddOne(
3)    '这里调用函数AddOne并传入一个参数3
        Console.ReadLine
    
end sub

    
    
public sub AddOne(Byval n as Integer)  '这里是函数AddOne的定义
        Console.WriteLine(n + 1)
    
end sub

end module


函数是有返回值的。我们写一个函数,传入一个整数,函数返回这个数的加二。例如给它3,它返回5。

public function AddTwo(Byval n as Integeras Integer
    
return n + 2        'return后面的表达式就是这个函数要返回的东西
end function


因为他返回一个整数,所以我们可以象使用整数一样使用这个函数。完整的使用这个函数代码如下:

imports System

public module MyModule
    
sub Main
        Console.
WriteLine(AddTwo(3))   '这里使用函数AddTwo
        Console.ReadLine
    
end sub


    
public function AddTwo(Byval n as Integeras Integer
        
return n + 2
    
end function

end module


像前面“输入输出”一章的那个加法例子,我们可以这样写:

imports System

public module MainModule
    
public sub Main()
        
dim i, j as integer
        i 
= ReadNumber("第一个数:")
        j 
= ReadNumber("第二个数:")
        Console.
WriteLine("{0}:{1}""结果是", i + j)
        Console.Read
    
end sub


    
public function ReadNumber(Byval Message as Stringas Integer
        Console.
WriteLine(Message)
        
return cint(Console.Readline)
    
end function

end Module


这样,main函数看起来简洁多了。


VB.net是面向对象的语言。关于对象,我这里没有很详细的解释。如果你不了解什么是对象,建议看看《Thinking in Java》那样的经典。下面几篇是介绍在VB.net中“对象”是个什么样子的:

VB.net入门(5):类~成员和方法