1.0 Introduction
1.1 Purpose & Scope
This document is to compare the syntax between the VB.Net and C#.Net for various coding concepts.
2.0 Comparison
2.1 Program Structure
VB.NET |
C#.NET |
Imports System |
using System; |
2.2 Comments
VB.NET |
C#.NET |
' Single line only |
// Single line |
2.3 Data Types
VB.NET |
C#.NET |
Value Types
Reference Types
Initializing
Type Information
Type Conversion |
Value Types
Reference Types
Initializing
Type Information
Type Conversion |
2.4 Constants
VB.NET |
C#.NET |
Const MAX_STUDENTS As Integer = 25
' Can set to a const or var; may be initialized in a constructor |
const int MAX_STUDENTS = 25;
// Can set to a const or var; may be initialized in a constructor |
2.5 Enumerations
VB.NET |
C#.NET |
Enum Action |
enum Action {Start, Stop, Rewind, Forward}; |
2.6 Operators
VB.NET |
C#.NET |
Comparison
Arithmetic
Assignment
Bitwise
Logical Note: AndAlso and OrElse perform short-circuit logical evaluations
String Concatenation |
Comparison
Arithmetic
Assignment
Bitwise
Logical Note: && and || perform short-circuit logical evaluations
String Concatenation |
2.7 Choices
VB.NET |
C#.NET |
greeting = IIf(age < 20, "What's up?", "Hello")
' One line doesn't require "End If"
' Use : to put two commands on same line
' Preferred
' To break up any long single line use _
'If x > 5 Then
Select Case color ' Must be a primitive data type |
greeting = age < 20 ? "What's up?" : "Hello";
if (age < 20)
// Multiple statements must be enclosed in {} No need for _ or : since ; is used to terminate each statement.
|
2.8 Loops
VB.NET |
C#.NET |
||||||
Pre-test Loops:
Post-test Loops:
' Array or collection looping
' Breaking out of loops
' Continue to next iteration |
Pre-test Loops:
// no "until" keyword
// Array or collection looping
// Breaking out of loops
// Continue to next iteration |
2.9 Arrays
VB.NET |
C#.NET |
Dim nums() As Integer = {1, 2, 3}
|
int[] nums = {1, 2, 3};
float[,] twoD = new float[rows, cols];
int[][] jagged = new int[3][] { |
2.10 Functions
VB.NET |
C#.NET |
' Pass by value (in, default), reference (in/out), and reference (out)
Dim a = 1, b = 1, c As Integer ' c set to zero by default
' Accept variable number of arguments
' Optional parameters must be listed last and must have a default value |
// Pass by value (in, default), reference (in/out), and reference (out)
int a = 1, b = 1, c; // c doesn't need initializing
// Accept variable number of arguments 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. */ |
2.11 Strings
VB.NET |
C#.NET |
Special character constants
' String concatenation (use & or +)
' Chars
' No string literal operator
' String comparison Console.WriteLine(mascot.Substring(2, 3)) ' Prints "son"
' String matching
' My birthday: Oct 12, 1973
' Mutable string |
Escape sequences
// Chars
// String literal
// String comparison Console.WriteLine(mascot.Substring(2, 3)); // Prints "son"
// String matching
// My birthday: Oct 12, 1973
// Mutable string |
2.12 Exception Handling
VB.NET |
C#.NET |
' Throw an exception
' Catch an exception
' Deprecated unstructured error handling |
// Throw an exception
// Catch an exception |
2.13 Namespaces
VB.NET |
C#.NET |
Namespace Harding.Compsci.Graphics ' or
Namespace Harding Imports Harding.Compsci.Graphics |
namespace Harding.Compsci.Graphics { // or
namespace Harding { using Harding.Compsci.Graphics; |
2.14 Classes / Interfaces
VB.NET |
C#.NET |
Accessibility keywords
' Inheritance
' Interface definition
// Extending an interface
// Interface implementation |
Accessibility keywords
// Inheritance
// Extending an interface
|
2.15 Constructors / Destructors
VB.NET |
C#.NET |
Class SuperHero |
class SuperHero { |
2.16 Using Objects
VB.NET |
C#.NET |
Dim hero As SuperHero = New SuperHero
With hero
hero.Defend("Laura Jones")
Dim hero2 As SuperHero = hero ' Both reference the same object hero = Nothing ' Free the object
If hero IsNothing Then _
Dim obj As Object = New SuperHero
' Mark object for quick disposal |
SuperHero hero = new SuperHero();
// No "With" construct
hero.Defend("Laura Jones");
hero = null ; // Free the object
if (hero == null)
Object obj = new SuperHero();
// Mark object for quick disposal |
2.17 Structs
VB.NET |
C#.NET |
Structure StudentRecord
Dim stu As StudentRecord = New StudentRecord("Bob", 3.5) |
struct StudentRecord {
StudentRecord stu = new StudentRecord("Bob", 3.5f); |
2.18 Properties
VB.NET |
C#.NET |
Private _size As Integer foo.Size += 1 |
private int _size;
|
2.19 Delegates / Events
VB.NET |
C#.NET |
Delegate Sub MsgArrivedEventHandler(ByVal message As String) Event MsgArrivedEvent As MsgArrivedEventHandler
' or to define an event which declares a delegate implicitly
AddHandler MsgArrivedEvent, AddressOfMy_MsgArrivedCallback Imports System.Windows.Forms
Dim WithEvents MyButton As Button ' WithEvents can't be used on local variable
Private Sub MyButton_Click(ByVal sender As System.Object, _ |
delegate void MsgArrivedEventHandler(string message); event MsgArrivedEventHandler MsgArrivedEvent;
// Delegates must be used with events in C#
Button MyButton = new Button();
private void MyButton_Click(object sender, System.EventArgs e) { |
2.20 Console I/O
VB.NET |
C#.NET |
Console.Write("What's your name? ") |
Console.Write("What's your name? ");
|
2.21 File I/O
VB.NET |
C#.NET |
Imports System.IO
' Write out to text file
' Read all lines from text file
' Write out to binary file
' Read from binary file |
using System.IO;
// Write out to text file
// Read all lines from text file
// Write out to binary file
// Read from binary file
|