0% found this document useful (0 votes)
303 views16 pages

CheatSheet C# Vs VBdoc PDF

This document compares and contrasts syntax and features between VB.NET and C#. It covers topics such as comments, program structure, data types, constants, enumerations, operators, and control flow statements. The summary highlights that the document provides a side-by-side comparison of syntax for these common programming elements between the two languages.

Uploaded by

Rastate
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PDF, TXT or read online on Scribd
0% found this document useful (0 votes)
303 views16 pages

CheatSheet C# Vs VBdoc PDF

This document compares and contrasts syntax and features between VB.NET and C#. It covers topics such as comments, program structure, data types, constants, enumerations, operators, and control flow statements. The summary highlights that the document provides a side-by-side comparison of syntax for these common programming elements between the two languages.

Uploaded by

Rastate
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PDF, TXT or read online on Scribd
You are on page 1/ 16

This document is an authorized derivative of Frank McCown's "VB.

NET and
C# Comparison" (C) 2005 at
http://www.harding.edu/USER/fmccown/WWW/vbnet_csharp_comparison.html
This work is licensed under a Create Common License

Comments
VB.NET C#

'Single line only // Single line


Rem Single line only /* Multiple
line */
/// XML comments on single line
/** XML comments on multiple lines */

Program Structure
VB.NET C#

Imports System using System


Namespace MyNameSpace Namespace MyNameSpace
Class HelloWorld {
'Entry point which delegates to C-style main class HelloWorld
Private Function {
Public Overloads Shared Sub Main() static void Main(string[] args)
Main(System.Environment.GetCommandLineArgs()) {
End Sub System.Console.WriteLine("Hello
World")
Overloads Shared Sub Main(args() As String) }
System.Console.WriteLine("Hello World") }
End Sub 'Main }
End Class 'HelloWorld End Namespace 'MyNameSpace
This document is an authorized derivative of Frank McCown's "VB.NET and
C# Comparison" (C) 2005 at
http://www.harding.edu/USER/fmccown/WWW/vbnet_csharp_comparison.html
This work is licensed under a Create Common License

Data Types
VB.NET C#

'Value Types //Value Types


Boolean bool
Byte byte, sbyte
Char (example: "A") char (example: 'A')
Short, Integer, Long short, ushort, int, uint, long, ulong
Single, Double float, double
Decimal decimal
Date DateTime

'Reference Types //Reference Types


Object object
String string

Dim x As Integer int x;


System.Console.WriteLine(x.GetType()) Console.WriteLine(x.GetType())
System.Console.WriteLine(TypeName(x)) Console.WriteLine(typeof(int))

'Type conversion //Type conversion


Dim d As Single = 3.5 float d = 3.5;
Dim i As Integer = CType (d, Integer) int i = (int) d
i = CInt (d)
i = Int(d)

Constants
VB.NET C#

Const MAX_AUTHORS As Integer = 25 const int MAX_AUTHORS = 25;


ReadOnly MIN_RANK As Single = 5.00 readonly float MIN_RANKING = 5.00;
This document is an authorized derivative of Frank McCown's "VB.NET and
C# Comparison" (C) 2005 at
http://www.harding.edu/USER/fmccown/WWW/vbnet_csharp_comparison.html
This work is licensed under a Create Common License

Enumerations
VB.NET C#

Enum Action enum Action {Start, Stop, Rewind, Forward};


Start enum Status {Flunk = 50, Pass = 70, Excel =
'Stop is a reserved word 90};
[Stop]
Rewind
Forward
End Enum

Enum Status
Flunk = 50
Pass = 70
Excel = 90
End Enum

Dim a As Action = Action.Stop Action a = Action.Stop;


If a <> Action.Start Then _ if (a != Action.Start)
'Prints "Stop is 1" //Prints "Stop is 1"
System.Console.WriteLine(a.ToString & " is " & System.Console.WriteLine(a + " is " +
a) (int) a);

'Prints 70 // Prints 70
System.Console.WriteLine(Status.Pass) System.Console.WriteLine((int)
'Prints Pass Status.Pass);
System.Console.WriteLine(Status.Pass.ToString()) // Prints Pass
System.Console.WriteLine(Status.Pass);

Enum Weekdays
Saturday
Sunday enum Weekdays
Monday {
Tuesday Saturday, Sunday, Monday, Tuesday,
Wednesday Wednesday, Thursday, Friday
Thursday }
Friday
End Enum 'Weekdays
This document is an authorized derivative of Frank McCown's "VB.NET and
C# Comparison" (C) 2005 at
http://www.harding.edu/USER/fmccown/WWW/vbnet_csharp_comparison.html
This work is licensed under a Create Common License

Operators
VB.NET C#

'Comparison //Comparison
= < > <= >= <> == < > <= >= !=

'Arithmetic //Arithmetic
+ - * / + - * /
Mod % (mod)
\ (integer division) / (integer division if both operands are
^ (raise to a power) ints)
Math.Pow(x, y)

'Assignment
= += -= *= /= \= ^= <<= >>= &= //Assignment
= += -= *= /= %= &= |= ^= <<=
>>= ++ --
'Bitwise
And AndAlso Or OrElse Not << >>
//Bitwise
& | ^ ~ << >>
'Logical
And AndAlso Or OrElse Not
//Logical
&& || !
'String Concatenation
&
//String Concatenation
+
This document is an authorized derivative of Frank McCown's "VB.NET and
C# Comparison" (C) 2005 at
http://www.harding.edu/USER/fmccown/WWW/vbnet_csharp_comparison.html
This work is licensed under a Create Common License

Choices
VB.NET C#

greeting = IIf(age < 20, "What's up?", "Hello") greeting = age < 20 ? "What's up?" :
"Hello";

'One line doesn't require "End If", no "Else"


If language = "VB.NET" Then langType = "verbose"

'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 if (x != 100 && y < 5)
y *= 2 {
End If // Multiple statements must be enclosed
in {}
x *= 5;
y *= 2;
}
'or to break up any long single command use _
If henYouHaveAReally < longLine And _
itNeedsToBeBrokenInto2 > Lines Then _
UseTheUnderscore(charToBreakItUp)

If x > 5 Then
x *= y
ElseIf x = 5 Then if (x > 5)
x += y x *= y;
ElseIf x < 10 Then else if (x == 5)
x -= y x += y;
Else else if (x < 10)
x /= y x -= y;
End If else
x /= y;

'Must be a primitive data type


Select Case color
Case "black", "red" //Must be integer or string
r += 1 switch (color)
Case "blue" {
b += 1 case "black":
Case "green" case "red": r++;
g += 1 break;
Case Else case "blue"
other += 1 break;
End Select case "green": g++;
break;
default: other++;
break;
}
This document is an authorized derivative of Frank McCown's "VB.NET and
C# Comparison" (C) 2005 at
http://www.harding.edu/USER/fmccown/WWW/vbnet_csharp_comparison.html
This work is licensed under a Create Common License

Loops
VB.NET C#

'Pre-test Loops: //Pre-test Loops: while (i < 10)


While c < 10 i++;
c += 1 for (i = 2; i < = 10; i += 2)
End While Do Until c = 10 System.Console.WriteLine(i);
c += 1
Loop

'Post-test Loop:
Do While c < 10
c += 1 //Post-test Loop:
Loop do
i++;
while (i < 10);
For c = 2 To 10 Step 2
System.Console.WriteLine(c)
Next

'Array or collection looping


Dim names As String() = {"Steven", "SuOk", "Sarah"}
For Each s As String In names // Array or collection looping
System.Console.WriteLine(s) string[] names = {"Steven", "SuOk",
Next "Sarah"};
foreach (string s in names)
System.Console.WriteLine(s);
This document is an authorized derivative of Frank McCown's "VB.NET and
C# Comparison" (C) 2005 at
http://www.harding.edu/USER/fmccown/WWW/vbnet_csharp_comparison.html
This work is licensed under a Create Common License

Arrays
VB.NET C#

Dim nums() As Integer = {1, 2, 3} int[] nums = {1, 2, 3};


For i As Integer = 0 To nums.Length - 1 for (int i = 0; i < nums.Length; i++)
Console.WriteLine(nums(i)) Console.WriteLine(nums[i]);
Next

'4 is the index of the last element, so it holds 5 // 5 is the size of the array
elements string[] names = new string[5];
Dim names(4) As String names[0] = "Steven";
names(0) = "Steven" // Throws System.IndexOutOfRangeException
'Throws System.IndexOutOfRangeException names[5] = "Sarah"
names(5) = "Sarah"

// C# can't dynamically resize an array.


'Resize the array, keeping the existing //Just copy into new array.
'values (Preserve is optional) string[] names2 = new string[7];
ReDim Preserve names(6) // or names.CopyTo(names2, 0);
Array.Copy(names, names2, names.Length);

float[,] twoD = new float[rows, cols];


Dim twoD(rows-1, cols-1) As Single twoD[2,0] = 4.5;
twoD(2, 0) = 4.5

int[][] jagged = new int[3][] {


Dim jagged()() As Integer = { _ new int[5], new int[2], new int[3] };
New Integer(4) {}, New Integer(1) {}, New jagged[0][4] = 5;
Integer(2) {} }
jagged(0)(4) = 5
This document is an authorized derivative of Frank McCown's "VB.NET and
C# Comparison" (C) 2005 at
http://www.harding.edu/USER/fmccown/WWW/vbnet_csharp_comparison.html
This work is licensed under a Create Common License

Functions
VB.NET C#

'Pass by value (in, default), reference // Pass by value (in, default), reference
'(in/out), and reference (out) //(in/out), and reference (out)
Sub TestFunc(ByVal x As Integer, ByRef y As void TestFunc(int x, ref int y, out int z)
Integer, {
ByRef z As Integer) x++;
x += 1 y++;
y += 1 z = 5;
z = 5 }
End Sub

'c set to zero by default


int a = 1, b = 1, c; // c doesn't need
Dim a = 1, b = 1, c As Integer initializing
TestFunc(a, b, c) TestFunc(a, ref b, out c);
System.Console.WriteLine("{0} {1} {2}", a, b, c) '1 System.Console.WriteLine("{0} {1} {2}", a,
2 5 b, c); // 1 2 5

'Accept variable number of arguments // Accept variable number of arguments


Function Sum(ByVal ParamArray nums As Integer()) As int Sum(params int[] nums) {
Integer int sum = 0;
Sum = 0 foreach (int i in nums)
For Each i As Integer In nums sum += i;
Sum += i return sum;
Next }
End Function 'Or use a Return statement like C#

Dim total As Integer = Sum(4, 3, 2, 1) 'returns 10 int total = Sum(4, 3, 2, 1); // returns 10

'Optional parameters must be listed last /* C# doesn't support optional


'and must have a default value arguments/parameters.
Sub SayHello(ByVal name As String, Just create two different versions of the
Optional ByVal prefix As String = "") same function. */
System.Console.WriteLine("Greetings, " & prefix void SayHello(string name, string prefix) {
& " " & name) System.Console.WriteLine("Greetings, " +
End Sub prefix + " " + name);
}

SayHello("Steven", "Dr.") void SayHello(string name) {


SayHello("SuOk") SayHello(name, "");
}
This document is an authorized derivative of Frank McCown's "VB.NET and
C# Comparison" (C) 2005 at
http://www.harding.edu/USER/fmccown/WWW/vbnet_csharp_comparison.html
This work is licensed under a Create Common License

Exception Handling
VB.NET C#

Class Withfinally class Withfinally


Public Shared Sub Main() {
Try public static void Main()
Dim x As Integer = 5 {
Dim y As Integer = 0 try
Dim z As Integer = x / y {
Console.WriteLine(z) int x = 5;
Catch e As DivideByZeroException int y = 0;
System.Console.WriteLine("Error occurred") int z = x/y;
Finally Console.WriteLine(z);
System.Console.WriteLine("Thank you") }
End Try catch(DivideByZeroException e)
End Sub 'Main {
End Class 'Withfinally System.Console.WriteLine("Error
occurred");
}
finally
{
System.Console.WriteLine("Thank
you");
}
}
}

Namespaces
VB.NET C#

Namespace ASPAlliance.DotNet.Community namespace ASPAlliance.DotNet.Community {


... ...
End Namespace }

'or // or

Namespace ASPAlliance namespace ASPAlliance {


Namespace DotNet namespace DotNet {
Namespace Community namespace Community {
... ...
End Namespace }
End Namespace }
End Namespace }

Imports ASPAlliance.DotNet.Community using ASPAlliance.DotNet.Community;


This document is an authorized derivative of Frank McCown's "VB.NET and
C# Comparison" (C) 2005 at
http://www.harding.edu/USER/fmccown/WWW/vbnet_csharp_comparison.html
This work is licensed under a Create Common License

Classes / Interfaces
VB.NET C#

'Accessibility keywords //Accessibility keywords


Public public
Private private
Friend internal
Protected protected
Protected Friend protected internal
Shared static

'Inheritance //Inheritance
Class Articles class Articles: Authors {
Inherits Authors ...
... }
End Class

using System;
Imports System

interface IArticle
Interface IArticle {
Sub Show() void Show();
End Interface 'IArticle }
_

class IAuthor:IArticle
Class IAuthor {
Implements IArticle public void Show()
{
Public Sub Show() System.Console.WriteLine("Show() method
System.Console.WriteLine("Show() method Implemented");
Implemented") }
End Sub 'Show

'Entry point which delegates to C-style main public static void Main(string[] args)
Private Function {
Public Overloads Shared Sub Main() IAuthor author = new IAuthor();
Main(System.Environment.GetCommandLineArgs()) author.Show();
End Sub }
}

Overloads Public Shared Sub Main(args() As


String)
Dim author As New IAuthor()
author.Show()
End Sub 'Main
End Class 'IAuthor
This document is an authorized derivative of Frank McCown's "VB.NET and
C# Comparison" (C) 2005 at
http://www.harding.edu/USER/fmccown/WWW/vbnet_csharp_comparison.html
This work is licensed under a Create Common License

Constructors / Destructors
VB.NET C#

Class TopAuthor class TopAuthor {


Private _topAuthor As Integer private int _topAuthor;

Public Sub New() public TopAuthor() {


_topAuthor = 0 _topAuthor = 0;
End Sub }

Public Sub New(ByVal topAuthor As Integer) public TopAuthor(int topAuthor) {


Me._topAuthor = topAuthor this._topAuthor= topAuthor
End Sub }

Protected Overrides Sub Finalize() ~TopAuthor() {


'Desctructor code to free unmanaged resources // Destructor code to free unmanaged
MyBase.Finalize() resources.
End Sub // Implicitly creates a Finalize method
End Class }
}

Objects
VB.NET C#

Dim author As TopAuthor = New TopAuthor TopAuthor author = new TopAuthor();


With author
.Name = "Steven" //No "With" construct
.AuthorRanking = 3 author.Name = "Steven";
End With author.AuthorRanking = 3;

author.Rank("Scott")
author.Demote() 'Calling Shared method author.Rank("Scott");
'or TopAuthor.Demote() //Calling static method
TopAuthor.Rank()

Dim author2 As TopAuthor = author 'Both refer to


same object TopAuthor author2 = author //Both refer to
author2.Name = "Joe" same object
System.Console.WriteLine(author2.Name) 'Prints Joe author2.Name = "Joe";
System.Console.WriteLine(author2.Name)
//Prints Joe
author = Nothing 'Free the object

author = null //Free the object


If author Is Nothing Then _
author = New TopAuthor
if (author == null)
author = new TopAuthor();
Dim obj As Object = New TopAuthor
If TypeOf obj Is TopAuthor Then _
System.Console.WriteLine("Is a TopAuthor Object obj = new TopAuthor();
object.") if (obj is TopAuthor)
SystConsole.WriteLine("Is a TopAuthor
object.");
This document is an authorized derivative of Frank McCown's "VB.NET and
C# Comparison" (C) 2005 at
http://www.harding.edu/USER/fmccown/WWW/vbnet_csharp_comparison.html
This work is licensed under a Create Common License

Structs
VB.NET C#

Structure AuthorRecord struct AuthorRecord {


Public name As String public string name;
Public rank As Single public float rank;

Public Sub New(ByVal name As String, ByVal rank public AuthorRecord(string name, float
As Single) rank) {
Me.name = name this.name = name;
Me.rank = rank this.rank = rank;
End Sub }
End Structure }

Dim author As AuthorRecord = New


AuthorRecord("Steven", 8.8) AuthorRecord author = new
Dim author2 As AuthorRecord = author AuthorRecord("Steven", 8.8);
AuthorRecord author2 = author
author2.name = "Scott"
System.Console.WriteLine(author.name) 'Prints author.name = "Scott";
Steven SystemConsole.WriteLine(author.name);
System.Console.WriteLine(author2.name) 'Prints //Prints Steven
Scott System.Console.WriteLine(author2.name);
//Prints Scott
This document is an authorized derivative of Frank McCown's "VB.NET and
C# Comparison" (C) 2005 at
http://www.harding.edu/USER/fmccown/WWW/vbnet_csharp_comparison.html
This work is licensed under a Create Common License

Properties
VB.NET C#

Private _size As Integer private int _size;

Public Property Size() As Integer public int Size {


Get get {
Return _size return _size;
End Get }
Set (ByVal Value As Integer) set {
If Value < 0 Then if (value < 0)
_size = 0 _size = 0;
Else else
_size = Value _size = value;
End If }
End Set }
End Property

foo.Size += 1 foo.Size++;

Imports System using System;


class Date
{
Class [Date] public int Day{
get {
Public Property Day() As Integer return day;
Get }
Return day set {
End Get day = value;
Set }
day = value }
End Set int day;
End Property
Private day As Integer
public int Month{
get {
Public Property Month() As Integer return month;
Get }
Return month set {
End Get month = value;
Set }
month = value }
End Set int month;
End Property
Private month As Integer
public int Year{
get {
Public Property Year() As Integer return year;
Get }
Return year set {
End Get year = value;
Set }
year = value }
End Set int year;
End Property
Private year As Integer
public bool IsLeapYear(int year)
{
Public Function IsLeapYear(year As Integer) As return year%4== 0 ? true: false;
Boolean }
This document is an authorized derivative of Frank McCown's "VB.NET and
C# Comparison" (C) 2005 at
http://www.harding.edu/USER/fmccown/WWW/vbnet_csharp_comparison.html
This work is licensed under a Create Common License
Return(If year Mod 4 = 0 Then True Else public void SetDate (int day, int
False) month, int year)
End Function 'IsLeapYear {
this.day = day;
Public Sub SetDate(day As Integer, month As this.month = month;
Integer, this.year = year;
year As Integer) }
Me.day = day }
Me.month = month
Me.year = year
End Sub 'SetDate
End Class '[Date]

Delegates / Events
VB.NET C#

Delegate Sub MsgArrivedEventHandler(ByVal message delegate void MsgArrivedEventHandler(string


As String) message);

Event MsgArrivedEvent As MsgArrivedEventHandler event MsgArrivedEventHandler


MsgArrivedEvent;

'or to define an event which declares a


'delegate implicitly //Delegates must be used with events in C#
Event MsgArrivedEvent(ByVal message As String)

MsgArrivedEvent += new
AddHandler MsgArrivedEvent, AddressOf MsgArrivedEventHandler
My_MsgArrivedCallback (My_MsgArrivedEventCallback);
'Won't throw an exception if obj is Nothing //Throws exception if obj is null
RaiseEvent MsgArrivedEvent("Test message") MsgArrivedEvent("Test message");
RemoveHandler MsgArrivedEvent, AddressOf MsgArrivedEvent -= new
My_MsgArrivedCallback MsgArrivedEventHandler
(My_MsgArrivedEventCallback);

Imports System.Windows.Forms
using System.Windows.Forms;

'WithEvents can't be used on local variable


Dim WithEvents MyButton As Button Button MyButton = new Button();
MyButton = New Button MyButton.Click += new
System.EventHandler(MyButton_Click);

Private Sub MyButton_Click(ByVal sender As


System.Object, _ private void MyButton_Click(object sender,
ByVal e As System.EventArgs) Handles System.EventArgs e) {
MyButton.Click MessageBox.Show(this, "Button was
MessageBox.Show(Me, "Button was clicked", "Info", clicked", "Info",
_ MessageBoxButtons.OK,
MessageBoxButtons.OK, MessageBoxIcon.Information);
MessageBoxIcon.Information) }
End Sub
This document is an authorized derivative of Frank McCown's "VB.NET and
C# Comparison" (C) 2005 at
http://www.harding.edu/USER/fmccown/WWW/vbnet_csharp_comparison.html
This work is licensed under a Create Common License

Console I/O
VB.NET C#

'Special character constants //Escape sequences


vbCrLf, vbCr, vbLf, vbNewLine \n, \r
vbNullString \t
vbTab \\
vbBack \
vbFormFeed
vbVerticalTab
"" Convert.ToChar(65) //Returns 'A' -
Chr(65) 'Returns 'A' equivalent to Chr(num) in VB
// or
(char) 65
System.Console.Write("What's your name? ")
Dim name As String = System.Console.ReadLine()
System.Console.Write("How old are you? ") System.Console.Write("What's your name? ");
Dim age As Integer = Val(System.Console.ReadLine()) string name = SYstem.Console.ReadLine();
System.Console.WriteLine("{0} is {1} years old.", System.Console.Write("How old are you? ");
name, age) int age =
'or Convert.ToInt32(System.Console.ReadLine());
System.Console.WriteLine(name & " is " & age & " System.Console.WriteLine("{0} is {1} years
years old.") old.", name, age);
//or
Dim c As Integer System.Console.WriteLine(name + " is " +
c = System.Console.Read() 'Read single char age + " years old.");
System.Console.WriteLine(c) 'Prints 65 if user
enters "A"
int c = System.Console.Read(); //Read
single char
System.Console.WriteLine(c); //Prints 65 if
user enters "A"
This document is an authorized derivative of Frank McCown's "VB.NET and
C# Comparison" (C) 2005 at
http://www.harding.edu/USER/fmccown/WWW/vbnet_csharp_comparison.html
This work is licensed under a Create Common License

File I/O
VB.NET C#

Imports System.IO using System.IO;

'Write out to text file //Write out to text file


Dim writer As StreamWriter = File.CreateText StreamWriter writer = File.CreateText
("c:\myfile.txt") ("c:\\myfile.txt");
writer.WriteLine("Out to file.") writer.WriteLine("Out to file.");
writer.Close() writer.Close();

'Read all lines from text file //Read all lines from text file
Dim reader As StreamReader = File.OpenText StreamReader reader = File.OpenText
("c:\myfile.txt") ("c:\\myfile.txt");
Dim line As String = reader.ReadLine() string line = reader.ReadLine();
While Not line Is Nothing while (line != null) {
Console.WriteLine(line) Console.WriteLine(line);
line = reader.ReadLine() line = reader.ReadLine();
End While }
reader.Close() reader.Close();

'Write out to binary file //Write out to binary file


Dim str As String = "Text data" string str = "Text data";
Dim num As Integer = 123 int num = 123;
Dim binWriter As New BinaryWriter(File.OpenWrite BinaryWriter binWriter = new
("c:\myfile.dat")) BinaryWriter(File.OpenWrite
binWriter.Write(str) ("c:\\myfile.dat"));
binWriter.Write(num) binWriter.Write(str);
binWriter.Close() binWriter.Write(num);
binWriter.Close();

'Read from binary file


Dim binReader As New BinaryReader(File.OpenRead //Read from binary file
("c:\myfile.dat")) BinaryReader binReader = new
str = binReader.ReadString() BinaryReader(File.OpenRead
num = binReader.ReadInt32() ("c:\\myfile.dat"));
binReader.Close() str = binReader.ReadString();
num = binReader.ReadInt32();
binReader.Close();

You might also like