VB.NET |
Program Structure |
C# |
|
Imports
System
Namespace
Hello
Class
HelloWorld
Overloads Shared Sub Main(ByVal args() As
String)
Dim name As String =
"VB.NET"
‘See
if an argument was passed from the command
line
If args.Length = 1 Then name =
args(0)
Console.WriteLine("Hello, " & name &
"!")
End
Sub
End
Class
End Namespace |
using
System;
namespace Hello
{
public class HelloWorld
{
public static
void Main(string[] args)
{
string name =
"C#";
//
See if an argument was passed from the command
line
if (args.Length ==
1)
name =
args[0];
Console.WriteLine("Hello, " + name +
"!");
}
}
} |
|
‘ Single line
only Rem Single
line only |
// Single line /*
Multiple line
*/ /// XML comments on single
line /** XML comments on multiple lines
*/ |
|
Value
Types
Boolean
Byte
Char (example:
"A"c)
Short, Integer,
Long
Single,
Double
Decimal
Date
Reference
Types
Object
String
Dim x As Integer
Console.WriteLine(x.GetType()) ‘
Prints
System.Int32
Console.WriteLine(GetType(Integer)) ‘
Prints
System.Int32
Console.WriteLine(TypeName(x)) ‘
Prints Integer
‘ Type
conversion
Dim d As Single =
3.5
Dim i As Integer
= CType(d,
Integer) ‘ set to 4 (Banker‘s
rounding)
i
= CInt(d) ‘
same result as
CType
i
= Int(d) ‘
set to 3 (Int function truncates the decimal) |
Value
Types
bool
byte,
sbyte
char (example:
‘A‘)
short, ushort, int, uint, long,
ulong
float,
double
decimal
DateTime (not a built-in C#
type)
Reference
Types
object
string
int
x;
Console.WriteLine(x.GetType()); //
Prints
System.Int32
Console.WriteLine(typeof(int)); //
Prints
System.Int32
Console.WriteLine(x.GetType().Name); //
prints Int32
// Type
conversion
float d =
3.5f;
int i
= (int)d; //
set to 3 (truncates decimal)
|
|
Const MAX_STUDENTS As Integer
= 25
‘ Can set to a const or var; may be initialized
in a
constructor ReadOnly MIN_DIAMETER As Single
= 4.93 |
const int
MAX_STUDENTS = 25;
// Can set to a const or var; may be initialized
in a
constructor readonly float
MIN_DIAMETER = 4.93f; |
|
Enum Action
Start
[Stop] ‘ Stop is a reserved
word
Rewind
Forward End
Enum
Enum Status
Flunk =
50
Pass =
70
Excel = 90 End
Enum
Dim a As Action =
Action.Stop
If a <> Action.Start Then
_
Console.WriteLine(a.ToString & " is " &
a) ‘ Prints "Stop is
1"
Console.WriteLine(Status.Pass) ‘
Prints
70
Console.WriteLine(Status.Pass.ToString()) ‘
Prints Pass |
enum Action
{Start, Stop, Rewind,
Forward}; enum Status
{Flunk = 50, Pass = 70, Excel =
90};
Action a =
Action.Stop;
if (a !=
Action.Start)
Console.WriteLine(a + " is " + (int)
a); // Prints "Stop is
1"
Console.WriteLine((int)
Status.Pass); // Prints
70
Console.WriteLine(Status.Pass); //
Prints Pass |
|
Comparison
= < > <= >= <>
Arithmetic
+ - *
/
Mod
" (integer
division)
^ (raise to a power)
Assignment
= += -= *= /= "= ^=
<<= >>= &=
Bitwise
And Or Not <<
>>
Logical
AndAlso OrElse And Or
Xor Not
Note: AndAlso and
OrElse perform short-circuit logical evaluations
String
Concatenation
& + |
Comparison
== < > <= >= !=
Arithmetic
+ - *
/
% (mod)
/ (integer division if both operands are
ints)
Math.Pow(x, y)
Assignment
= += -= *= /= %= &=
|= ^= <<= >>= ++ --
Bitwise
& | ^ ~
<< >>
Logical
&& || & |
^ !
Note: &&
and || perform short-circuit logical evaluations
String
Concatenation
+ |
|
greeting
= IIf(age < 20, "What‘s
up?", "Hello")
‘ One line doesn‘t require "End
If" If age
< 20 Then greeting
= "What‘s
up?" If age <
20 Then greeting =
"What‘s up?" Else greeting = "Hello"
‘ Use : to put two commands on same
line If x
<> 100 And y <
5 Then x *=
5 : y *=
2
‘
Preferred If x
<> 100 And y <
5 Then
x *=
5
y *= 2 End If
‘ To break up any long single line use
_ If whenYouHaveAReally
< longLine And
_
itNeedsToBeBrokenInto2 >
Lines Then _
UseTheUnderscore(charToBreakItUp)
‘If x
>
5 Then
x *= y ElseIf x =
5 Then
x += y ElseIf x
<
10 Then
x -=
y Else
x /= y End If
Select
Case color ‘
Must be a primitive data
type Case "pink",
"red"
r +=
1 Case "blue"
b +=
1 Case "green"
g +=
1 Case
Else
other += 1 End Select |
greeting = age <
20 ? "What‘s
up?" : "Hello";
if (age <
20)
greeting = "What‘s
up?"; else
greeting = "Hello";
// Multiple statements must be enclosed in
{} if (x
!= 100 && y < 5)
{
x *=
5;
y *=
2;
}
No need for _ or : since ; is used to terminate
each statement.
if (x
>
5)
x *= y; else if
(x ==
5)
x += y; else if
(x <
10)
x -=
y; else
x /= y;
// Every case must end with
break or goto
case switch (color)
{ //
Must be integer or
string case "pink": case "red":
r++; break; case "blue":
b++; break; case "green":
g++; break; default:
other++; break; //
break necessary on
default
}
|
|
Pre-test Loops: |
While c
<
10
c += 1 End
While |
Do Until c
=
10
c += 1 Loop |
Do While c
<
10
c += 1 Loop |
For c =
2 To 10 Step 2
Console.WriteLine(c) Next |
Post-test
Loops:
|
Do
c +=
1 Loop While c
< 10 |
Do
c +=
1 Loop Until c
= 10 |
‘ Array or collection
looping
Dim names As String() = {"Fred", "Sue",
"Barney"} For
Each s As
String In names
Console.WriteLine(s) Next
‘ Breaking out of
loops
Dim i As Integer =
0
While
(True)
If (i = 5) Then Exit
While
i +=
1
End While
‘ Continue to next
iteration
For i = 0 To
4
If i < 4 Then Continue
For
Console.WriteLine(i) ‘ Only prints
4
Next |
Pre-test Loops:
// no "until"
keyword while (c
<
10)
c++;
for (c = 2; c
<= 10; c +=
2)
Console.WriteLine(c);
Post-test
Loop:
do
c++; while (c
< 10);
// Array or collection
looping
string[] names = {"Fred", "Sue",
"Barney"}; foreach (string
s in names)
Console.WriteLine(s);
// Breaking out of
loops
int i =
0;
while (true)
{
if (i ==
5) break;
i++;
}
// Continue to next
iteration
for (i = 0; i < 5; i++)
{
if (i <
4) continue;
Console.WriteLine(i); // Only prints
4
} |
|
Dim
nums() As Integer = {1, 2,
3}
For i As Integer = 0 To nums.Length -
1
Console.WriteLine(nums(i))
Next
‘ 4 is the index of the last element,
so it holds 5
elements
Dim names(4) As
String
names(0) =
"David"
names(5) = "Bobby" ‘ Throws
System.IndexOutOfRangeException
‘
Resize the array, keeping the existing values (Preserve is
optional) ReDim
Preserve names(6)
Dim twoD(rows-1, cols-1) As
Single
twoD(2, 0) =
4.5
Dim jagged()() As Integer
= {
_
New Integer(4) {}, New Integer(1) {}, New Integer(2) {}
}
jagged(0)(4) = 5
|
int[] nums
= {1, 2,
3};
for (int i = 0; i < nums.Length;
i++)
Console.WriteLine(nums[i]);
// 5 is the size
of the
array
string[] names = new
string[5];
names[0] =
"David";
names[5] = "Bobby"; // Throws
System.IndexOutOfRangeException
//
C# can‘t dynamically resize an array. Just copy into new
array.
string[] names2 = new
string[7];
Array.Copy(names, names2,
names.Length); // or
names.CopyTo(names2, 0);
float[,] twoD
= new float[rows,
cols];
twoD[2,0] = 4.5f;
int[][] jagged
= new int[3][]
{
new int[5], new int[2], new int[3]
};
jagged[0][4] = 5; |
|
‘ Pass by value (in, default), reference
(in/out), and reference
(out) Sub TestFunc(ByVal x
As Integer, ByRef y
As Integer, ByRef z
As
Integer)
x +=
1
y +=
1
z = 5 End Sub
Dim a = 1, b = 1, c As
Integer ‘ c set to zero by
default
TestFunc(a, b,
c)
Console.WriteLine("{0} {1} {2}", a, b,
c) ‘ 1 2 5
‘ Accept variable number of
arguments Function Sum(ByVal ParamArray nums As Integer())
As
Integer
Sum =
0
For Each i As Integer In
nums
Sum +=
i
Next End
Function ‘ Or use
Return statement like
C#
Dim total As Integer = Sum(4, 3, 2, 1) ‘
returns 10
‘ Optional parameters must be listed last and
must have a default
value Sub SayHello(ByVal
name As
String, Optional ByVal
prefix As String =
"")
Console.WriteLine("Greetings, " & prefix & " " &
name) End
Sub
SayHello("Strangelove",
"Dr.")
SayHello("Madonna") |
// Pass by value (in, default), reference
(in/out), and reference
(out)
void TestFunc(int
x, ref int
y, out int z)
{
x++;
y++;
z =
5;
}
int a = 1, b = 1, c; // c
doesn‘t need
initializing
TestFunc(a, ref b, out c);
Console.WriteLine("{0} {1} {2}", a, b, c); //
1 2 5
// Accept variable number of
arguments
int Sum(params int[] nums)
{
int sum =
0;
foreach (int i in
nums)
sum +=
i;
return
sum;
}
int total = Sum(4, 3, 2,
1); // returns 10
/* C# doesn‘t support optional
arguments/parameters. Just create two different versions of the same
function.
*/
void SayHello(string name, string prefix)
{
Console.WriteLine("Greetings, " + prefix + " " +
name);
}
void SayHello(string name)
{
SayHello(name,
"");
} |
|
Special character
constants
vbCrLf, vbCr, vbLf,
vbNewLine
vbNullString
vbTab
vbBack
vbFormFeed
vbVerticalTab
""
‘ String concatenation (use & or
+)
Dim school As String =
"Harding" & vbTab
school = school & "University" ‘ school is
"Harding (tab) University"
‘
Chars
Dim letter As Char =
school.Chars(0) ‘ letter is
H
letter =
Convert.ToChar(65) ‘
letter is
A
letter
= Chr(65) ‘
same thing Dim word() As Char =
school.ToCharArray() ‘ word holds
Harding
‘ No string literal
operator
Dim msg As String = "File is c:"temp"x.dat"
‘ String
comparison
Dim mascot As String =
"Bisons"
If (mascot = "Bisons") Then ‘
true
If (mascot.Equals("Bisons"))
Then ‘
true
If
(mascot.ToUpper().Equals("BISONS"))
Then ‘
true
If (mascot.CompareTo("Bisons")
= 0) Then ‘ true
Console.WriteLine(mascot.Substring(2,
3)) ‘ Prints "son"
‘ String
matching
If ("John 3:16" Like "Jo[Hh]? #:*")
Then ‘true
Imports System.Text.RegularExpressions ‘
More powerful than
Like
Dim r As New Regex("Jo[hH].
"d:*")
If (r.Match("John 3:16").Success)
Then ‘true
‘ My birthday: Oct 12,
1973
Dim dt As New DateTime(1973, 10,
12)
Dim s As String = "My birthday: " & dt.ToString("MMM dd,
yyyy")
‘ Mutable
string Dim buffer As New
System.Text.StringBuilder("two
")
buffer.Append("three
")
buffer.Insert(0, "one
")
buffer.Replace("two",
"TWO")
Console.WriteLine(buffer) ‘
Prints "one TWO three" |
Escape
sequences
"n,
"r
"t
""
""
// String
concatenation string school
=
"Harding"t";
school = school + "University"; //
school is "Harding (tab) University"
//
Chars char letter
=
school[0]; //
letter is
H
letter =
Convert.ToChar(65); //
letter is
A
letter
= (char)65; //
same
thing char[] word
= school.ToCharArray(); // word holds
Harding
// String
literal
string msg = @"File is
c:"temp"x.dat"; // same
as
string msg = "File is c:""temp""x.dat";
// String
comparison
string mascot =
"Bisons";
if (mascot == "Bisons") //
true
if
(mascot.Equals("Bisons")) //
true
if
(mascot.ToUpper().Equals("BISONS")) //
true
if (mascot.CompareTo("Bisons")
== 0) // true
Console.WriteLine(mascot.Substring(2,
3)); // Prints
"son"
// String
matching // No Like equivalent - use regular
expressions
using System.Text.RegularExpressions; Regex r =
new Regex(@"Jo[hH].
"d:*");
if (r.Match("John 3:16").Success) //
true
// My birthday: Oct 12,
1973
DateTime dt = new DateTime(1973, 10,
12);
string s = "My birthday: " + dt.ToString("MMM dd, yyyy");
// Mutable
string
System.Text.StringBuilder buffer
= new
System.Text.StringBuilder("two
");
buffer.Append("three
");
buffer.Insert(0, "one
");
buffer.Replace("two",
"TWO");
Console.WriteLine(buffer); //
Prints "one TWO three" |
VB.NET |
Exception Handling |
C# | |
‘ Throw an
exception
Dim ex As New Exception("Something is really
wrong.") Throw
ex
‘ Catch an
exception Try
y =
0
x = 10 / y Catch ex As
Exception When y =
0 ‘ Argument and When is
optional
Console.WriteLine(ex.Message) Finally
Beep() End Try
‘ Deprecated unstructured error
handling On Error GoTo MyErrorHandler
...
MyErrorHandler: Console.WriteLine(Err.Description) |
// Throw an
exception
Exception up = new Exception("Something is really
wrong."); throw up; //
ha ha
// Catch an
exception try {
y =
0;
x = 10 /
y;
} catch (Exception
ex) { // Argument is optional, no "When"
keyword
Console.WriteLine(ex.Message);
} finally { //
Requires reference to the
Microsoft.VisualBasic.dll //
assembly (pre .NET Framework
v2.0)
Microsoft.VisualBasic.Interaction.Beep();
} |
|
Namespace Harding.Compsci.Graphics
... End Namespace
‘ or
Namespace Harding Namespace Compsci Namespace Graphics
... End
Namespace End
Namespace End
Namespace
Imports Harding.Compsci.Graphics |
namespace Harding.Compsci.Graphics
{
...
}
// or
namespace Harding
{ namespace Compsci
{ namespace Graphics
{
...
}
}
}
using Harding.Compsci.Graphics; |
VB.NET |
Classes / Interfaces |
C# | |
Accessibility
keywords
Public
Private
Friend
Protected
Protected
Friend
Shared
‘
Inheritance Class FootballGame Inherits Competition
... End Class
‘ Interface
definition Interface IAlarmClock
... End Interface
// Extending an
interface Interface IAlarmClock Inherits IClock
... End Interface
// Interface
implementation Class WristWatch Implements IAlarmClock,
ITimer
... End Class |
Accessibility
keywords
public
private
internal
protected
protected
internal
static
//
Inheritance class FootballGame : Competition
{
...
}
// Interface
definition interface IAlarmClock
{
...
}
// Extending an
interface interface IAlarmClock : IClock
{
...
}
// Interface
implementation class WristWatch : IAlarmClock,
ITimer
{
...
}
|
VB.NET |
Constructors / Destructors |
C# | |
Class SuperHero
Private _powerLevel As
Integer
Public
Sub New()
_powerLevel =
0
End
Sub
Public Sub New(ByVal
powerLevel As
Integer)
Me._powerLevel =
powerLevel
End
Sub
Protected Overrides
Sub Finalize() ‘
Desctructor code to free unmanaged
resources
MyBase.Finalize()
End Sub End Class |
class SuperHero
{
private int
_powerLevel;
public SuperHero()
{
_powerLevel =
0;
}
public SuperHero(int powerLevel)
{
this._powerLevel=
powerLevel;
}
~SuperHero()
{ //
Destructor code to free unmanaged
resources. // Implicitly
creates a Finalize
method
}
} |
|
Dim hero As SuperHero = New
SuperHero ‘
or
Dim hero As New SuperHero
With hero
.Name =
"SpamMan"
.PowerLevel = 3 End With
hero.Defend("Laura
Jones")
hero.Rest() ‘ Calling Shared
method ‘
or
SuperHero.Rest()
Dim hero2 As SuperHero =
hero ‘ Both reference the same
object
hero2.Name =
"WormWoman"
Console.WriteLine(hero.Name) ‘ Prints
WormWoman
hero
= Nothing ‘
Free the object
If
hero IsNothing Then
_
hero = New SuperHero
Dim obj As Object = New
SuperHero
If TypeOf obj Is SuperHero
Then
_
Console.WriteLine("Is a SuperHero object.")
‘ Mark object for quick
disposal Using reader As
StreamReader =
File.OpenText("test.txt")
Dim line As String =
reader.ReadLine()
While Not line Is
Nothing
Console.WriteLine(line)
line =
reader.ReadLine()
End While End Using |
SuperHero hero = new
SuperHero();
// No "With"
construct
hero.Name =
"SpamMan";
hero.PowerLevel = 3;
hero.Defend("Laura
Jones");
SuperHero.Rest(); // Calling static
method
SuperHero hero2 = hero; // Both
reference the same
object
hero2.Name =
"WormWoman";
Console.WriteLine(hero.Name); // Prints
WormWoman
hero
= null ; //
Free the object
if (hero
== null)
hero = new SuperHero();
Object obj = new
SuperHero();
if
(obj is SuperHero)
Console.WriteLine("Is a SuperHero object.");
// Mark object for quick
disposal using (StreamReader
reader = File.OpenText("test.txt"))
{
string
line;
while ((line = reader.ReadLine()) !=
null)
Console.WriteLine(line);
} |
|
Structure StudentRecord
Public name As
String
Public gpa As
Single
Public Sub New(ByVal name As String, ByVal gpa As
Single)
Me.name =
name
Me.gpa =
gpa
End Sub End Structure
Dim stu As StudentRecord = New StudentRecord("Bob",
3.5)
Dim stu2 As StudentRecord =
stu
stu2.name =
"Sue"
Console.WriteLine(stu.name) ‘
Prints
Bob
Console.WriteLine(stu2.name) ‘ Prints
Sue |
struct StudentRecord
{
public string
name;
public float
gpa;
public StudentRecord(string name, float gpa)
{
this.name =
name;
this.gpa =
gpa;
}
}
StudentRecord stu = new StudentRecord("Bob",
3.5f);
StudentRecord stu2 =
stu;
stu2.name =
"Sue";
Console.WriteLine(stu.name); //
Prints
Bob
Console.WriteLine(stu2.name); // Prints
Sue |
|
Private _size As
Integer
Public Property Size()
As
Integer Get
Return
_size End
Get Set (ByVal
Value As
Integer)
If Value < 0
Then
_size =
0
Else
_size =
Value
End
If End
Set End
Property
foo.Size += 1 |
private int
_size;
public int Size
{ get {
return
_size;
} set {
if (value <
0)
_size =
0;
else
_size =
value;
}
}
foo.Size++;
|
VB.NET |
Delegates / Events |
C# | |
Delegate Sub
MsgArrivedEventHandler(ByVal message As String)
Event MsgArrivedEvent
As MsgArrivedEventHandler
‘ or to define an event which declares a
delegate
implicitly Event MsgArrivedEvent(ByVal
message As String)
AddHandler MsgArrivedEvent, AddressOf My_MsgArrivedCallback ‘
Won‘t throw an exception if obj is
Nothing RaiseEvent MsgArrivedEvent("Test
message") RemoveHandler MsgArrivedEvent, AddressOf My_MsgArrivedCallback
Imports System.Windows.Forms
Dim WithEvents MyButton
As Button ‘ WithEvents can‘t be used on
local
variable
MyButton = New Button
Private Sub MyButton_Click(ByVal sender As
System.Object,
_
ByVal e As
System.EventArgs) Handles MyButton.Click
MessageBox.Show(Me, "Button was clicked", "Info",
_
MessageBoxButtons.OK,
MessageBoxIcon.Information)
End Sub |
delegate void
MsgArrivedEventHandler(string message);
event MsgArrivedEventHandler
MsgArrivedEvent;
// Delegates must be used with events in
C#
MsgArrivedEvent += new
MsgArrivedEventHandler(My_MsgArrivedEventCallback);
MsgArrivedEvent("Test
message"); // Throws exception if
obj is
null
MsgArrivedEvent -= new
MsgArrivedEventHandler(My_MsgArrivedEventCallback);
using System.Windows.Forms;
Button MyButton = new
Button();
MyButton.Click += new System.EventHandler(MyButton_Click);
private void MyButton_Click(object sender,
System.EventArgs e)
{
MessageBox.Show(this, "Button was clicked",
"Info",
MessageBoxButtons.OK,
MessageBoxIcon.Information);
} |
|
Console.Write("What‘s your name?
")
Dim name As String =
Console.ReadLine()
Console.Write("How old are you?
")
Dim age As Integer =
Val(Console.ReadLine())
Console.WriteLine("{0} is {1} years old.", name,
age) ‘
or
Console.WriteLine(name & " is " & age & " years
old.")
Dim c As
Integer
c = Console.Read() ‘ Read single
char
Console.WriteLine(c) ‘ Prints 65 if user
enters "A" |
Console.Write("What‘s your name?
");
string name =
Console.ReadLine();
Console.Write("How old are you?
");
int age =
Convert.ToInt32(Console.ReadLine());
Console.WriteLine("{0} is {1} years old.", name,
age); //
or
Console.WriteLine(name + " is " + age + " years old.");
int c = Console.Read(); // Read single
char
Console.WriteLine(c); // Prints 65
if user enters "A"
|
|
Imports System.IO
‘ Write out to text
file
Dim writer
As StreamWriter =
File.CreateText("c:"myfile.txt")
writer.WriteLine("Out to
file.")
writer.Close()
‘ Read all lines from text
file
Dim reader
As StreamReader =
File.OpenText("c:"myfile.txt")
Dim line As String =
reader.ReadLine()
While Not line Is
Nothing
Console.WriteLine(line)
line =
reader.ReadLine()
End
While
reader.Close()
‘ Write out to binary
file
Dim str As String = "Text
data"
Dim num As Integer =
123
Dim binWriter As
New BinaryWriter(File.OpenWrite("c:"myfile.dat"))
binWriter.Write(str)
binWriter.Write(num)
binWriter.Close()
‘ Read from binary
file
Dim binReader As
New BinaryReader(File.OpenRead("c:"myfile.dat"))
str =
binReader.ReadString()
num =
binReader.ReadInt32()
binReader.Close() |
using System.IO;
// Write out to text
file StreamWriter writer
=
File.CreateText("c:""myfile.txt");
writer.WriteLine("Out to
file.");
writer.Close();
// Read all lines from text
file StreamReader reader
=
File.OpenText("c:""myfile.txt");
string line =
reader.ReadLine();
while (line != null)
{
Console.WriteLine(line);
line =
reader.ReadLine();
}
reader.Close();
// Write out to binary
file
string str = "Text
data";
int num =
123; BinaryWriter binWriter
= new
BinaryWriter(File.OpenWrite("c:""myfile.dat"));
binWriter.Write(str);
binWriter.Write(num);
binWriter.Close();
// Read from binary
file BinaryReader binReader
= new
BinaryReader(File.OpenRead("c:""myfile.dat"));
str =
binReader.ReadString();
num =
binReader.ReadInt32();
binReader.Close(); |