|
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"
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#";
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 */ |
|
|
|
Boolean Byte Char Short, Integer, Long Single, Double Decimal Date
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
Dim d As Single = 3.5 Dim i As Integer = CType(d, Integer) i = CInt(d) i = Int(d) ' set to 3 (Int function truncates the decimal)
|
bool byte, sbyte char short, ushort, int, uint, long, ulong float, double decimal DateTime (not a built-in C# type)
object string
int x; Console.WriteLine(x.GetType()); 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
ReadOnly MIN_DIAMETER As Single = 4.93
|
const int MAX_STUDENTS = 25;
readonly float MIN_DIAMETER = 4.93f;
|
|
|
|
Enum Action Start [Stop] 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);
Console.WriteLine((int) Status.Pass); // Prints 70 Console.WriteLine(Status.Pass); // Prints Pass |
|
|
|
= < > <= >= <>
+ - * / Mod \ ^ (raise to a power)
= += -= *= /= \= ^= <<= >>= &=
And Or Not << >>
AndAlso OrElse And Or Xor Not
Note: AndAlso and OrElse perform short-circuit logical evaluations
& +
|
== < > <= >= !=
+ - * / % / Math.Pow(x, y)
= += -= *= /= %= &= |= ^= <<= >>= ++ --
& | ^ ~ << >>
&& || & | ^ !
Note: && and || perform short-circuit logical evaluations
+
|
|
|
|
greeting = IIf(age < 20, "What's up?", "Hello")
If age < 20 Then greeting = "What's up?" If age < 20 Then greeting = "What's up?" Else greeting = "Hello"
If x <> 100 And y < 5 Then x *= 5 : y *= 2
If x <> 100 And y < 5 Then x *= 5 y *= 2 End If
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 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";
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; }
|
|
|
|
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 |
Dim names As String() = {"Fred", "Sue", "Barney"} For Each s As String In names Console.WriteLine(s) Next
Dim i As Integer = 0 While (True) If (i = 5) Then Exit While i += 1 End While
For i = 0 To 4 If i < 4 Then Continue For Console.WriteLine(i) Next
|
Pre-test Loops:
while (c < 10) c++;
for (c = 2; c <= 10; c += 2) Console.WriteLine(c);
do c++; while (c < 10);
string[] names = {"Fred", "Sue", "Barney"}; foreach (string s in names) Console.WriteLine(s);
int i = 0; while (true) { if (i == 5) break; i++; }
for (i = 0; i < 5; i++) { if (i < 4) continue; Console.WriteLine(i); }
|
|
|
|
Dim nums() As Integer = {1, 2, 3} For i As Integer = 0 To nums.Length - 1 Console.WriteLine(nums(i)) Next
Dim names(4) As String names(0) = "David" names(5) = "Bobby" ' Throws System.IndexOutOfRangeException
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]);
string[] names = new string[5]; names[0] = "David"; names[5] = "Bobby"; // Throws System.IndexOutOfRangeException
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
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") |
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
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, ""); } |
|
|
|
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"
Dim letter As Char = school.Chars(0) letter = Convert.ToChar(65) 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"
Dim mascot As String = "Bisons" If (mascot = "Bisons") Then If (mascot.Equals("Bisons")) Then If (mascot.ToUpper().Equals("BISONS")) Then If (mascot.CompareTo("Bisons") = 0) Then ' true
Console.WriteLine(mascot.Substring(2, 3)) ' Prints "son"
If ("John 3:16" Like "Jo[Hh]? #:*") Then 'true
Imports System.Text.RegularExpressions Dim r As New Regex("Jo[hH]. \d:*") If (r.Match("John 3:16").Success) Then 'true
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" |
\n, \r \t \\ \"
string school = "Harding\t"; school = school + "University"; // school is "Harding (tab) University"
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 mascot = "Bisons"; if (mascot == "Bisons") if (mascot.Equals("Bisons")) if (mascot.ToUpper().Equals("BISONS")) 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
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# |
|
|
Dim ex As New Exception("Something is really wrong.") Throw ex
Try y = 0 x = 10 / y Catch ex As Exception When y = 0 Console.WriteLine(ex.Message) Finally Beep() End Try
On Error GoTo MyErrorHandler ... MyErrorHandler: Console.WriteLine(Err.Description)
|
Exception up = new Exception("Something is really wrong."); throw up; // ha ha
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
Class FootballGame Inherits Competition ... End Class
Interface IAlarmClock ... End Interface
Interface IAlarmClock Inherits IClock ... End Interface
Class WristWatch Implements IAlarmClock, ITimer ... End Class
|
Accessibility keywords public private internal protected protected internal static
class FootballGame : Competition { ... }
// Interface definition interface IAlarmClock { ... }
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() {
} } |
|
|
|
Dim hero As SuperHero = New SuperHero
Dim hero As New SuperHero
With hero .Name = "SpamMan" .PowerLevel = 3 End With
hero.Defend("Laura Jones") hero.Rest()
SuperHero.Rest()
Dim hero2 As SuperHero = hero ' Both reference the same object hero2.Name = "WormWoman" Console.WriteLine(hero.Name) ' Prints WormWoman
hero = Nothing
If hero Is Nothing Then _ hero = New SuperHero
Dim obj As Object = New SuperHero If TypeOf obj Is SuperHero Then _ Console.WriteLine("Is a SuperHero object.")
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();
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 ;
if (hero == null) hero = new SuperHero();
Object obj = new SuperHero(); if (obj is SuperHero) Console.WriteLine("Is a SuperHero object.");
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); 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
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 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;
MsgArrivedEvent += new MsgArrivedEventHandler(My_MsgArrivedEventCallback); MsgArrivedEvent("Test message"); 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);
Console.WriteLine(name + " is " + age + " years old.");
int c = Console.Read(); Console.WriteLine(c); // Prints 65 if user enters "A"
|
|
|
|
Imports System.IO
Dim writer As StreamWriter = File.CreateText("c:\myfile.txt") writer.WriteLine("Out to file.") writer.Close()
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()
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()
Dim binReader As New BinaryReader(File.OpenRead("c:\myfile.dat")) str = binReader.ReadString() num = binReader.ReadInt32() binReader.Close()
|
using System.IO;
StreamWriter writer = File.CreateText("c:\\myfile.txt"); writer.WriteLine("Out to file."); writer.Close();
StreamReader reader = File.OpenText("c:\\myfile.txt"); string line = reader.ReadLine(); while (line != null) { Console.WriteLine(line); line = reader.ReadLine(); } reader.Close();
string str = "Text data"; int num = 123; BinaryWriter binWriter = new BinaryWriter(File.OpenWrite("c:\\myfile.dat")); binWriter.Write(str); binWriter.Write(num); binWriter.Close();
BinaryReader binReader = new BinaryReader(File.OpenRead("c:\\myfile.dat")); str = binReader.ReadString(); num = binReader.ReadInt32(); binReader.Close();
|