comparison of c#.net and vb.net
14/08/2010 00:38VB.NET VS. 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 ''' <summary>XML comments</summary> |
// Single line |
||||||||||
|
|||||||||||
Value Types Reference Types Initializing Implicitly Typed Local Variables Type Information Type Conversion / Casting |
Value Types Reference Types Initializing Implicitly Typed Local Variables Type Information Type Conversion / Casting |
||||||||||
|
|||||||||||
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 |
||||||||||
|
|||||||||||
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 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 |
||||||||||
|
|||||||||||
' Ternary/Conditional operator (Iff evaluates 2nd and 3rd expressions) ' 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 |
// Ternary/Conditional operator if (age < 20) // Multiple statements must be enclosed in {} No need for _ or : since ; is used to terminate each statement.
|
||||||||||
|
|||||||||||
' Array or collection looping ' Breaking out of loops ' Continue to next iteration |
Pre-test Loops:
// no "until" keyword
// Array or collection looping
// Continue to next iteration |
||||||||||
|
|||||||||||
Dim nums() As Integer = {1, 2, 3}
|
int[] nums = {1, 2, 3}; float[,] twoD = new float[rows, cols]; int[][] jagged = new int[3][] { |
||||||||||
|
|||||||||||
' 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) 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 // Accept variable number of arguments int total = Sum(4, 3, 2, 1); // returns 10 /* C# 4.0 supports optional parameters. Previous versions required function overloading. */ SayHello("Strangelove", "Dr."); |
||||||||||
|
|||||||||||
Special character constants (all also accessible from ControlChars class) ' String concatenation (use & or +) ' Chars ' No string literal operator ' String comparison ' String matching with Like - Regex is more powerful ' Substring ' Replacement ' Split ' Date to string ' Integer to String ' String to Integer ' Mutable string |
Escape sequences // String concatenation // Chars // String literal // String comparison // String matching - No Like equivalent, use Regex
// Replacement // Split // Date to string // int to string int x = Convert.ToInt32("-5"); // x is -5 // Mutable string |
||||||||||
|
|||||||||||
Imports System.Text.RegularExpressions ' Match a string pattern ' Find and remember all matching patterns ' Remeber multiple parts of matched pattern ' Replace all occurrances of a pattern ' Replace matched patterns ' Split a string based on a pattern |
using System.Text.RegularExpressions; // Match a string pattern
// Replace all occurrances of a pattern // Replace matched patterns // Split a string based on a pattern |
||||||||||
|
|||||||||||
' Throw an exception ' Catch an exception ' Deprecated unstructured error handling |
// Throw an exception // Catch an exception |
||||||||||
|
|||||||||||
Namespace Harding.Compsci.Graphics ' or Namespace Harding Imports Harding.Compsci.Graphics |
namespace Harding.Compsci.Graphics { // or namespace Harding { using Harding.Compsci.Graphics; |
||||||||||
|
|||||||||||
Access Modifiers Class Modifiers Method Modifiers ' All members are Shared ' Partial classes ' Inheritance ' Interface definition // Extending an interface // Interface implementation |
Access Modifiers Class Modifiers Method Modifiers No Module equivalent - just use static class // Partial classes // Inheritance
// Extending an interface
|
||||||||||
|
|||||||||||
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 Shared Sub New() ' Shared constructor invoked before 1st instance is created End Sub Protected Overrides Sub Finalize() ' Destructor to free unmanaged resources MyBase.Finalize() End Sub End Class |
class SuperHero { |
||||||||||
|
|||||||||||
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 Is Nothing 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(); using (StreamReader reader = File.OpenText("test.txt")) { string line; while ((line = reader.ReadLine()) != null) Console.WriteLine(line); } |
||||||||||
|
|||||||||||
Structure StudentRecord Dim stu As StudentRecord = New StudentRecord("Bob", 3.5) |
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); ——— Back |