How procedures and variables (objects) are declared.


In many things, classical VB(A) and VB.NET are almost identical, as in the method signatures for procedures and methods. C# looks very different, but the same information is there, just in a different order and sometimes using different keywords. Once you understand the differences, it’s simple to go between the languages.

In the context of this discussion, a “method” is a procedure that executes actions but does not return a value. A “function” returns a value to the calling procedure.

Passing parameters by reference / by value

Parameters can be passed by reference or by value. By reference means that, if the code makes changes to the object that was passed, these will propagate back to the calling procedure. When something is passed in by value, a copy of the original is made and any changes will not propagate back to the original from the calling procedure.

By reference is the default when passing parameters in classic VB(A). By value is the default in VB.NET and C#.

Method declaration in VB-languages

Public Sub MyMethod(ByVal doc as Word.Document, ByRef counter as Integer)
   'Code comes here
End Sub

Method declaration in C# 

public void MyMethod(Word.Document doc, ref int counter)
   //Code comes here


The VB languages indicate the start of a method through the keyword Sub; the end of the method is recognizable by the keyword combination End Sub. C# denotes the beginning of a method through the keyword void and the opening/closing bracket pair { }.

C# has no term for passing parameters by value as that’s the default. In the VB languages the default may be specified, or left out.

Function declaration in classic VB(A)

Private MyFunction as Boolean()
    Dim RetVal as Boolean
    RetVal = True ' or False
    MyFunction = RetVal
End Function

Function declaration in VB.NET

Private MyFunction as Boolean()
    Dim RetVal as Boolean = True ' or False
    Return RetVal
End Function

Function declaration in C#

private bool myFunction
    bool retVal = true; //or false
    return retVal;


In the VB languages a function is recognizable by the keyword Function. The data type of the return value (or object) follows the function name and list of parameters, preceded by the keyword As.

In C# you can recognize a function by the substitution of a data type for the keyword void.

In VBA, in order to return the value it must be assigned to the name of the function. If you don’t do that, nothing is returned.

In the .NET languages use the keyword Return to return the value.

Variable/Object declaration

The logic behind the use of variables (the commonly used term in VB languages) / objects (C#)  in code is the same across all languages. Only the order of the parts of the declaration vary.

Variable declaration in VB.NET

Private MyString as String
Friend MyDoc as Word.Document

Object declaration in  C#

private string myString;
internal Word.Document myDoc;


In the VB languages, the data type is preceded by the keyword As, following the name of the variable.

In C#, the data type precedes the variable/object name.

In classic VB(A) and in VB.NET with Option Strict Off, data type declaration is not enforced. If a variable is declared without assigning a data type it gets the data type Variant (for more, see the page Data Types).

The discussion about variables/objects continues in the topic instantiation.

Leave a Reply