惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

WordPress大学
WordPress大学
V
Visual Studio Blog
P
Privacy International News Feed
月光博客
月光博客
Threat Intelligence Blog | Flashpoint
Threat Intelligence Blog | Flashpoint
L
Lohrmann on Cybersecurity
N
News and Events Feed by Topic
K
KPMG report finds enterprise disconnect between AI and its ROI | CIO
Apple Machine Learning Research
Apple Machine Learning Research
阮一峰的网络日志
阮一峰的网络日志
Webroot Blog
Webroot Blog
T
Threatpost
宝玉的分享
宝玉的分享
The Last Watchdog
The Last Watchdog
小众软件
小众软件
L
LINUX DO - 最新话题
C
Cisco Blogs
T
Troy Hunt's Blog
Schneier on Security
Schneier on Security
酷 壳 – CoolShell
酷 壳 – CoolShell
www.infosecurity-magazine.com
www.infosecurity-magazine.com
雷峰网
雷峰网
G
GRAHAM CLULEY
有赞技术团队
有赞技术团队
Know Your Adversary
Know Your Adversary
博客园 - 叶小钗
罗磊的独立博客
V
V2EX
博客园 - Franky
P
Proofpoint News Feed
SecWiki News
SecWiki News
腾讯CDC
cs.CL updates on arXiv.org
cs.CL updates on arXiv.org
Jina AI
Jina AI
博客园 - 三生石上(FineUI控件)
S
Secure Thoughts
钛媒体:引领未来商业与生活新知
钛媒体:引领未来商业与生活新知
Google DeepMind News
Google DeepMind News
Attack and Defense Labs
Attack and Defense Labs
人人都是产品经理
人人都是产品经理
The Cloudflare Blog
PCI Perspectives
PCI Perspectives
V2EX - 技术
V2EX - 技术
Google DeepMind News
Google DeepMind News
Last Week in AI
Last Week in AI
aimingoo的专栏
aimingoo的专栏
Cisco Talos Blog
Cisco Talos Blog
N
News and Events Feed by Topic
让小产品的独立变现更简单 - ezindie.com
让小产品的独立变现更简单 - ezindie.com
S
SegmentFault 最新的问题

博客园 - 中尉

开源后的.Net 如何选择使用 创建多个Oracle数据库及相应的实例 DB2和Oracle区别 宝化项目结题 用户中心 - 博客园 用户中心 - 博客园 用户中心 - 博客园 Java and C# Comparison 小小议下WINFORM应用框架开发(一) 整合TextBox与Label 创建新控件--EFLabelText 摩斯密码 用户中心 - 博客园 用户中心 - 博客园 ProC连接Oracle 关于博文转载 如何成为优秀的软件人才 休息下 从DLL中加载启动窗体 关于系统设计分层
VB.NET and C# Comparison
中尉 · 2011-10-19 · via 博客园 - 中尉

VB.NET and C# Comparison
This is a quick reference guide to highlight some key syntactical differences between VB.NET and C#. Hope you find this useful!
Thank you to Tom Shelton, Fergus Cooney, Steven Swafford, Gjuro Kladaric, and others for your contributions.

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
''' <summary>XML comments</summary>


Boolean
Byte, SByte
Char
Short, UShort, Integer, UInteger, Long, ULong
Single, Double
Decimal
Date  


Object
String


Dim correct As Boolean = True
Dim b As Byte = &H2A  
Dim person As Object = Nothing
Dim name As String = "Dwight"
Dim grade As Char = "B"c
Dim today As Date = #12/31/2010 12:15:00 PM#
Dim amount As Decimal = 35.99@
Dim gpa As Single = 2.9!
Dim pi As Double = 3.14159265
Dim lTotal As Long = 123456L
Dim sTotal As Short = 123S
Dim usTotal As UShort = 123US
Dim uiTotal As UInteger = 123UI
Dim ulTotal As ULong = 123UL


Dim s = "Hello!"
Dim nums = New Integer() {1, 2, 3}
Dim hero = New SuperHero With {.Name = "Batman"}


Dim x As Integer
Console.WriteLine(x.GetType())         
Console.WriteLine(GetType(Integer))  
Console.WriteLine(TypeName(x))       

Dim c as New Circle
If TypeOf c Is Shape Then _
    Console.WriteLine("c is a Shape")


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

Dim o As Object = 2
i = DirectCast(o, Integer)  

Dim s As New Shape
Dim c As Circle = TryCast(s, Circle)  


bool
byte, sbyte
char
short, ushort, int, uint, long, ulong
float, double
decimal
DateTime  


object
string


bool correct = true;
byte b = 0x2A;  
object person = null;
string name = "Dwight";
char grade = 'B';
DateTime today = DateTime.Parse("12/31/2010 12:15:00 PM");
decimal amount = 35.99m;
float gpa = 2.9f;
double pi = 3.14159265;
long lTotal = 123456L;
short sTotal = 123;
ushort usTotal = 123;
uint uiTotal = 123;
ulong ulTotal = 123;


var s = "Hello!";
var nums = new int[] { 1, 2, 3 };
var hero = new SuperHero() { Name = "Batman" };


int x;
Console.WriteLine(x.GetType());              
Console.WriteLine(typeof(int));              
Console.WriteLine(x.GetType().Name);  

Circle c = new Circle();
if (c is Shape)
    Console.WriteLine("c is a Shape");


float d = 3.5f;
i = Convert.ToInt32(d);    
int i = (int)d;    

object o = 2;
int i = (int)o;  

Shape s = new Shape();
Circle c = s as Circle;  

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)    

Console.WriteLine(Status.Pass)     
Console.WriteLine(Status.Pass.ToString())     

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);   
Console.WriteLine(Status.Pass);     


=  <  >  <=  >=  <>


+  -  *  /
Mod


=  +=  -=  *=  /=  \=  ^=  <<=  >>=  &=


And   Or   Xor   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 = If(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 AndAlso y < 5 Then x *= 5 : y *= 2  


If x <> 100 AndAlso 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 OrElse y Mod 2 = 0 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;
}


if
(x > 5)
  x *= y;
else if (x == 5 || y % 2 == 0)
  x += y;
else if (x < 10)
  x -= y;
else
  x /= y;


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 <= 4; 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" 


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";  


Array.Resize(ref names, 7);

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;

 
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    
TestFunc(a, b, c)
Console.WriteLine("{0} {1} {2}", a, b, c)  


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)  


Sub SayHello(ByVal name As String, Optional ByVal prefix As String = "")
  Console.WriteLine("Greetings, " & prefix & " " & name)
End Sub

SayHello("Strangelove", "Dr.")
SayHello("Mom")

// 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); 


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

 
void SayHello(string name, string prefix = "") {
  Console.WriteLine("Greetings, " + prefix + " " + name);

SayHello("Strangelove", "Dr.");
SayHello("Mom");


vbCrLf, vbCr, vbLf, vbNewLine
vbNullString
vbTab
vbBack
vbFormFeed
vbVerticalTab
""


Dim school As String = "Harding" & vbTab
school = school & "University"


Dim letter As Char = school.Chars(0)  
letter = "Z"c                                        
letter = Convert.ToChar(65)                
letter = Chr(65)                                 Dim word() As Char = school.ToCharArray()


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   


If ("John 3:16" Like "Jo[Hh]? #:*") Then  


s = mascot.Substring(2, 3))


s = mascot.Replace("sons", "nomial"))


Dim names As String = "Michael,Dwight,Jim,Pam"
Dim parts() As String = names.Split(",".ToCharArray())  


Dim dt As New DateTime(1973, 10, 12)
Dim s As String = "My birthday: " & dt.ToString("MMM dd, yyyy")  


Dim x As Integer = 2
Dim y As String = x.ToString()    


Dim x As Integer = Convert.ToInt32("-5")    

Dim buffer As New System.Text.StringBuilder("two ")
buffer.Append("three ")
buffer.Insert(0, "one ")
buffer.Replace("two", "TWO")
Console.WriteLine(buffer)        


\r    
\n    
\t    
\\    
\"    


string school = "Harding\t";
school = school + "University";  


char letter = school[0];           
letter = 'Z';                              
letter = Convert.ToChar(65);    
letter = (char)65;                    char[] word = school.ToCharArray();  


string msg = @"File is c:\temp\x.dat";

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)   



s = mascot.Substring(2, 3))    


s = mascot.Replace("sons", "nomial"))    


string names = "Michael,Dwight,Jim,Pam";
string[] parts = names.Split(",".ToCharArray());  


DateTime dt = new DateTime(1973, 10, 12);
string s = dt.ToString("MMM dd, yyyy");    


int x = 2;
string y = x.ToString();    

// string to int
int x = Convert.ToInt32("-5");     // x is -5


System.Text.StringBuilder buffer = new System.Text.StringBuilder("two ");
buffer.Append("three ");
buffer.Insert(0, "one ");
buffer.Replace("two", "TWO");
Console.WriteLine(buffer);    

VB.NET Regular Expressions C#

Imports System.Text.RegularExpressions


Dim r As New Regex("j[aeiou]h?. \d:*", RegexOptions.IgnoreCase Or _
        RegexOptions.Compiled)
If (r.Match("John 3:16").Success) Then  
    Console.WriteLine("Match")
End If


Dim s As String = "My number is 305-1881, not 305-1818."
Dim r As New Regex("(\d+-\d+)")
Dim m As Match = r.Match(s)    
While m.Success
    Console.WriteLine("Found number: " & m.Groups(1).Value & " at position " _
            & m.Groups(1).Index.ToString)
    m = m.NextMatch()
End While


Dim r As New Regex("(\d\d):(\d\d) (am|pm)")
Dim m As Match = r.Match("We left at 03:15 pm.")
If m.Success Then
    Console.WriteLine("Hour: " & m.Groups(1).ToString)      
    Console.WriteLine("Min: " & m.Groups(2).ToString)        
    Console.WriteLine("Ending: " & m.Groups(3).ToString)  
End If


Dim r As New Regex("h\w+?d", RegexOptions.IgnoreCase)
Dim s As String = r.Replace("I heard this was HARD!", "easy")  


Dim s As String = Regex.Replace("123 < 456", "(\d+) . (\d+)", "$2 > $1")  


Dim names As String = "Michael, Dwight, Jim, Pam"
Dim r As New Regex(",\s*")
Dim parts() As String = r.Split(names)  

using System.Text.RegularExpressions;


Regex r = new Regex(@"j[aeiou]h?. \d:*", RegexOptions.IgnoreCase |
        RegexOptions.Compiled);
if (r.Match("John 3:16").Success)  
    Console.WriteLine("Match");



string s = "My number is 305-1881, not 305-1818.";
Regex r = new Regex("(\\d+-\\d+)");

for (Match m = r.Match(s); m.Success; m = m.NextMatch())
    Console.WriteLine("Found number: " + m.Groups[1] + " at position " +
        m.Groups[1].Index);


Regex r = new Regex("@(\d\d):(\d\d) (am|pm)");
Match m = r.Match("We left at 03:15 pm.");
if (m.Success) {
    Console.WriteLine("Hour: " + m.Groups[1]);      
    Console.WriteLine("Min: " + m.Groups[2]);        
    Console.WriteLine("Ending: " + m.Groups[3]);  
}


Regex r = new Regex("h\\w+?d", RegexOptions.IgnoreCase);
string s = r.Replace("I heard this was HARD!", "easy"));  


string s = Regex.Replace("123 < 456", @"(\d+) . (\d+)", "$2 > $1");  


string names = "Michael, Dwight, Jim, Pam";
Regex r = new Regex(@",\s*");
string[] parts = r.Split(names);  

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; 


try
  y = 0;
  x = 10 / y;
}
catch (Exception ex) {    
  Console.WriteLine(ex.Message);
}
finally {
  Microsoft.VisualBasic.Interaction.Beep();
}

Namespace Harding.Compsci.Graphics 
  ...
End Namespace

Namespace Harding
  Namespace Compsci
    Namespace Graphics 
      ...
    End Namespace
  End Namespace
End Namespace

Imports Harding.Compsci.Graphics

namespace Harding.Compsci.Graphics {
  ...
}

namespace Harding {
  namespace Compsci {
    namespace Graphics {
      ...
    }
  }
}

using Harding.Compsci.Graphics;

VB.NET Classes / Interfaces C#


Public
Private
Friend
Protected
Protected Friend


MustInherit
NotInheritable


MustOverride
NotInheritable
Shared
Overridable


Module


Partial Class Competition
  ...
End Class 


Class FootballGame
  Inherits Competition
  ...
End Class 


Interface IAlarmClock
  Sub Ring()
  Property TriggerDateTime() As DateTime
End Interface


Interface IAlarmClock
  Inherits IClock
  ...
End Interface


Class WristWatch 
  Implements IAlarmClock, ITimer

  Public Sub Ring() Implements IAlarmClock.Ring
    Console.WriteLine("Wake up!")
  End Sub

  Public Property TriggerDateTime As DateTime Implements IAlarmClock.TriggerDateTime
  ...
End Class


public
private
internal
protected
protected internal


abstract
sealed
static


abstract
sealed
static
virtual


partial class Competition {
  ...
}


class FootballGame : Competition {
  ...
}


interface IAlarmClock {
  void Ring();
  DateTime CurrentDateTime { get; set; }
}


interface IAlarmClock : IClock {
  ...
}


class WristWatch : IAlarmClock, ITimer {

  public void Ring() {
    Console.WriteLine("Wake up!");
  }

  public DateTime TriggerDateTime { get; set; }
  ...
}

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

  Shared Sub New()
   
  End Sub

  Protected Overrides Sub Finalize() 
   
    MyBase.Finalize()
  End Sub
End Class

class SuperHero {
  private int powerLevel;

  public SuperHero() {
     powerLevel = 0;
  }

  public SuperHero(int powerLevel) {
    this.powerLevel = powerLevel; 
  }

  static SuperHero() {
   
  }

  ~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 
hero2.Name = "WormWoman"
Console.WriteLine(hero.Name)  

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();


SuperHero hero = new SuperHero() { Name = "SpamMan", PowerLevel = 3 };

hero.Defend("Laura Jones");
SuperHero.Rest();  

SuperHero hero2 = hero;  
hero2.Name = "WormWoman";
Console.WriteLine(hero.Name);  

hero = null ;  

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 Student
  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 Student = New Student("Bob", 3.5)
Dim stu2 As Student = stu  

stu2.name = "Sue"
Console.WriteLine(stu.name)    
Console.WriteLine(stu2.name)  

struct Student {
  public string name;
  public float gpa;

  public Student(string name, float gpa) {
    this.name = name;
    this.gpa = gpa;
  }
}

Student stu = new Student("Bob", 3.5f);
Student stu2 = stu;  

stu2.name = "Sue";
Console.WriteLine(stu.name);   
Console.WriteLine(stu2.name);  


Public Property Name As String
Public Property Size As Integer = -1    


Private mName As String
Public Property Name() As String
    Get
        Return mName
    End Get
    Set(ByVal value As String)
        mName = value
    End Set
End Property


Private mPowerLevel As Integer
Public ReadOnly Property PowerLevel() As Integer
    Get
        Return mPowerLevel
    End Get
End Property


Private mHeight As Double
Public WriteOnly Property Height() As Double
    Set(ByVal value As Double)
        mHeight = If(value < 0, mHeight = 0, mHeight = value)
    End Set
End Property


public string Name { get; set; }
public int Size { get; protected set; }    


private string name;
public string Name {
  get {
    return name;
  }
  set {
    name = value;
  }
}


private int powerLevel;
public int PowerLevel {
  get {
    return powerLevel;
  }
}


private double height;
public double Height {
  set {
    height = value < 0 ? 0 : value;
  }
}

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
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);
}


Dim numbers As New List(Of Integer)
numbers.Add(2)
numbers.Add(4)
DisplayList(Of Integer)(numbers)


Sub DisplayList(Of T)(ByVal list As List(Of T))
    For Each item As T In list
        Console.WriteLine(item)
    Next
End Sub


Class SillyList(Of T)
    Private list(10) As T
    Private rand As New Random

    Public Sub Add(ByVal item As T)
        list(rand.Next(10)) = item
    End Sub

    Public Function GetItem() As T
        Return list(rand.Next(10))
    End Function
End Class


Function Maximum(Of T As IComparable)(ByVal ParamArray items As T()) As T
    Dim max As T = items(0)
    For Each item As T In items
        If item.CompareTo(max) > 0 Then max = item
    Next
    Return max
End Function


List<int> numbers = new List<int>();
numbers.Add(2);
numbers.Add(4);
DisplayList<int>(numbers);


void DisplayList<T>(List<T> list) {
    foreach (T item in list)
        Console.WriteLine(item);
}


class SillyList<T> {
    private T[] list = new T[10];
    private Random rand = new Random();

    public void Add(T item) {
        list[rand.Next(10)] = item;
    }

    public T GetItem() {
        return list[rand.Next(10)];
    }
}


T Maximum<T>(params T[] items) where T : IComparable<T> {
    T max = items[0];
    foreach (T item in items)
        if (item.CompareTo(max) > 0)
            max = item;
    return max;
}

Dim nums() As Integer = {5, 8, 2, 1, 6}


Dim results = From value In nums
                  Where value > 4
                  Select value

Console.WriteLine(results.Count())    
Console.WriteLine(results.First())    
Console.WriteLine(results.Last())    
Console.WriteLine(results.Average())    


For Each n As Integer In results
    Console.Write(n & " ")
Next

results = results.Intersect({5, 6, 7})    
results = results.Concat({5, 1, 5})    
results = results.Distinct()    

Dim Students() As Student = {
    New Student With {.Name = "Bob", .GPA = 3.5},
    New Student With {.Name = "Sue", .GPA = 4.0},
    New Student With {.Name = "Joe", .GPA = 1.9}
}


Dim goodStudents = From s In Students
            Where s.GPA >= 3.0
            Order By s.GPA Descending
            Select s

Console.WriteLine(goodStudents.First.Name)    

int[] nums = { 5, 8, 2, 1, 6 };


var results = from value in nums
                where value > 4
                select value;

Console.WriteLine(results.Count());    
Console.WriteLine(results.First());    
Console.WriteLine(results.Last());    
Console.WriteLine(results.Average());    


foreach (int n in results)
    Console.Write(n + " ");

results = results.Intersect(new[] {5, 6, 7});    
results = results.Concat(new[] {5, 1, 5});    
results = results.Distinct();    

Student[] Students = {
    new Student{ Name = "Bob", GPA = 3.5 },
    new Student{ Name = "Sue", GPA = 4.0 },
    new Student{ Name = "Joe", GPA = 1.9 }
};


var goodStudents = from s in Students
            where s.GPA >= 3.0
            orderby s.GPA descending
            select s;

Console.WriteLine(goodStudents.First().Name);    

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) 

Console.WriteLine(name & " is " & age & " years old.")

Dim c As Integer
c = Console.Read()   
Console.WriteLine(c)  

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);   

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();