VB.net 2010 视频教程 VB.net 2010 视频教程 python基础视频教程
SQL Server 2008 视频教程 c#入门经典教程 Visual Basic从门到精通视频教程
当前位置:
首页 > temp > C#教程 >
  • vb.net与c#语法对比图

制作者:剑锋冷月 单位:无忧统计网,www.51stat.net
 

  C#和VB.net的语法相差还是比较大的. 可能你会C#,可能你会VB.

  将它们俩放在一起对比一下你就会很快读懂,并掌握另一门语言.

  相信下面这张图会对你帮助很大.

 

  Comments

  VB.NET

'Single line only

 

Rem Single line only

  C#

// Single line

 

/* Multiple

 

line */

 

/// XML comments on single line

 

/** XML comments on multiple lines */

  Data Types

  VB.NET

'Value Types

 

Boolean

 

Byte

 

Char (example: "A")

 

Short, Integer, Long

 

Single, Double

 

Decimal

 

Date

 

'Reference Types

 

Object

 

String

 

Dim x As Integer

 

System.Console.WriteLine(x.GetType())

 

System.Console.WriteLine(TypeName(x))

 

'Type conversion

 

Dim d As Single = 3.5

 

Dim i As Integer = CType (d, Integer)

 

i = CInt (d)

 

i = Int(d)

  C#

//Value Types

 

bool

 

byte, sbyte

 

char (example: 'A')

 

short, ushort, int, uint, long, ulong

 

float, double

 

decimal

 

DateTime

 

//Reference Types

 

object

 

string

 

int x;

 

Console.WriteLine(x.GetType())

 

Console.WriteLine(typeof(int))

 

//Type conversion

 

float d = 3.5;

 

int i = (int) d

  Constants

  VB.NET

Const MAX_AUTHORS As Integer = 25

 

ReadOnly MIN_RANK As Single = 5.00

  C#

const int MAX_AUTHORS = 25;

 

readonly float MIN_RANKING = 5.00;

  Enumerations

  VB.NET

Enum Action

 

 Start

 

 'Stop is a reserved word

 

[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 _

 

'Prints "Stop is 1"

 

 System.Console.WriteLine(a.ToString & " is " & a)

 

'Prints 70

 

System.Console.WriteLine(Status.Pass)

 

'Prints Pass

 

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

  C#

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

 

enum Status {Flunk = 50, Pass = 70, Excel = 90};

 

Action a = Action.Stop;

 

if (a != Action.Start)

 

//Prints "Stop is 1"

 

 System.Console.WriteLine(a + " is " + (int) a);

 

// Prints 70

 

System.Console.WriteLine((int) Status.Pass);

 

// Prints Pass

 

System.Console.WriteLine(Status.Pass);

  Operators

  VB.NET

'Comparison

 

= < > <= >= <>

 

'Arithmetic

 

+ - * /

 

Mod

 

 (integer division)

 

^ (raise to a power)

 

'Assignment

 

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

 

'Bitwise

 

And AndAlso Or OrElse Not << >>

 

'Logical

 

And AndAlso Or OrElse Not

 

'String Concatenation

 

&

  C#

//Comparison

 

== < > <= >= !=

 

//Arithmetic

 

+ - * /

 

% (mod)

 

/ (integer division if both operands are ints)

 

Math.Pow(x, y)

 

//Assignment

 

= += -= *= /=  %= &= |= ^= <<= >>= ++ --

 

//Bitwise

 

& | ^ ~ << >>

 

//Logical

 

&& ||  !

 

//String Concatenation

 

+

  Choices

  VB.NET

greeting = IIf(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

 

 y *= 2

 

End If

 

'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

 

 x += y

 

ElseIf x < 10 Then

 

 x -= y

 

Else

 

 x /= y

 

End If

 

'Must be a primitive data type

 

Select Case color  

 

 Case "black", "red"

 

  r += 1

 

 Case "blue"

 

  b += 1

 

 Case "green"

 

  g += 1

 

 Case Else

 

  other += 1

 

End Select

  C#

greeting = age < 20 ? "What's up?" : "Hello";

 

if (x != 100 && y < 5)

 

{

 

 // Multiple statements must be enclosed in {}

 

 x *= 5;

 

 y *= 2;

 

}

 

if (x > 5)

 

 x *= y;

 

else if (x == 5)

 

 x += y;

 

else if (x < 10)

 

 x -= y;

 

else

 

 x /= y;

 

//Must be integer or string

 

switch (color)

 

{

 

 case "black":

 

 case "red":  r++;

 

  break;

 

 case "blue"

 

  break;

 

 case "green": g++; 

 

  break;

 

 default:  other++;

 

  break;

 

}

  Loops

  VB.NET

'Pre-test Loops:

 

While c < 10

 

 c += 1

 

End While Do Until c = 10

 

 c+= 1

 

Loop

 

'Post-test Loop:

 

Do While c < 10

 

 c += 1

 

Loop

 

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

 

 System.Console.WriteLine(s)

 

Next

  C#

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

 

 i++;

 

for (i = 2; i < = 10; i += 2)

 

 System.Console.WriteLine(i);

 

//Post-test Loop:

 

do

 

 i++;

 

while (i < 10);

 

// Array or collection looping

 

string[] names = {"Steven", "SuOk", "Sarah"};

 

foreach (string s in names)

 

 System.Console.WriteLine(s);

  Arrays

  VB.NET

Dim nums() As Integer = {1, 2, 3}

 

For i As Integer = 0 To nums.Length - 1

 

 Console.WriteLine(nums(i))

 

Next

 

'4 is the index of the last element, so it holds 5 elements

 

Dim names(4) As String

 

names(0) = "Steven"

 

'Throws System.IndexOutOfRangeException

 

names(5) = "Sarah"

 

'Resize the array, keeping the existing

 

'values (Preserve is optional)

 

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

  C#

int[] nums = {1, 2, 3};

 

for (int i = 0; i < nums.Length; i++)

 

 Console.WriteLine(nums[i]);

 

// 5 is the size of the array

 

string[] names = new string[5];

 

names[0] = "Steven";

 

// Throws System.IndexOutOfRangeException

 

names[5] = "Sarah"

 

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

 

//Just copy into new array.

 

string[] names2 = new string[7];

 

// or names.CopyTo(names2, 0);

 

Array.Copy(names, names2, names.Length);

 

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

 

twoD[2,0] = 4.5;

 

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

 

 new int[5], new int[2], new int[3] };

 

jagged[0][4] = 5;

  Functions

  VB.NET

'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

 

'c set to zero by default

 

Dim a = 1, b = 1, c As Integer

 

TestFunc(a, b, c)

 

System.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 'Or use a Return statement like C#

 

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 = "")

 

 System.Console.WriteLine("Greetings, " & prefix

 

& " " & name)

 

End Sub

 

SayHello("Steven", "Dr.")

 

SayHello("SuOk")

  C#

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

 

System.Console.WriteLine("{0} {1} {2}", a, b, c); // 1 2 5

 

// Accept variable number of arguments

 

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'tsupport optional arguments/parameters.

 

Just create two different versions of the same function. */

 

void SayHello(string name, string prefix) {

 

 System.Console.WriteLine("Greetings, "

 

  + prefix + " " + name);

 

}

 

void SayHello(string name) {

 

 SayHello(name, "");

 

}

  Exception Handling

  VB.NET

'Deprecated unstructured error handling

 

On Error GoTo MyErrorHandler

 

...

 

MyErrorHandler: System.Console.WriteLine(Err.Description)

 

Dim ex As New Exception("Something has really gone wrong.")

 

Throw ex

 

Try

 

 y = 0

 

 x = 10 / y

 

Catch ex As Exception When y = 0 'Argument and When is optional

 

 System.Console.WriteLine(ex.Message)

 

Finally

 

 DoSomething()

 

End Try

  C#

  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{

 

 // Do something

 

}

  Namespaces

  VB.NET

Namespace ASPAlliance.DotNet.Community

 

 ...

 

End Namespace

 

'or

 

Namespace ASPAlliance

 

 Namespace DotNet

 

  Namespace Community

 

   ...

 

  End Namespace

 

 End Namespace

 

End Namespace

 

Imports ASPAlliance.DotNet.Community

  C#

namespace ASPAlliance.DotNet.Community {

 

 ...

 

}

 

// or

 

namespace ASPAlliance {

 

 namespace DotNet {

 

  namespace Community {

 

   ...

 

  }

 

 }

 

}

 

using ASPAlliance.DotNet.Community;

  Classes / Interfaces

  VB.NET

'Accessibility keywords

 

Public

 

Private

 

Friend

 

Protected

 

Protected Friend

 

Shared

 

'Inheritance

 

Class Articles

 

 Inherits Authors

 

 ...

 

End Class

 

'Interface definition

 

Interface IArticle

 

 ...

 

End Interface

 

'Extending an interface

 

Interface IArticle

 

 Inherits IAuthor

 

 ...

 

End Interface

 

'Interface implementation</span>

 

Class PublicationDate

 

 Implements</strong> IArticle, IRating

 

  ...

 

End Class

  C#

//Accessibility keywords

 

public

 

private

 

internal

 

protected

 

protected internal

 

static

 

//Inheritance

 

class Articles: Authors {

 

 ...

 

}

 

//Interface definition

 

interface IArticle {

 

 ...

 

}

 

//Extending an interface

 

interface IArticle: IAuthor {

 

 ...

 

}

 

//Interface implementation

 

class PublicationDate: IArticle, IRating {

 

  ...

 

}

  Constructors / Destructors

  VB.NET

Class TopAuthor

 

 Private _topAuthor As Integer

 

 Public Sub New()

 

  _topAuthor = 0

 

 End Sub

 

 Public Sub New(ByVal topAuthor As Integer)

 

  Me._topAuthor = topAuthor

 

 End Sub

 

 Protected Overrides Sub Finalize()

 

 'Desctructor code to free unmanaged resources

 

  MyBase.Finalize()

 

 End Sub

 

End Class

  C#

class TopAuthor {

 

 private int _topAuthor;

 

 public TopAuthor() {

 

  _topAuthor = 0;

 

 }

 

 public TopAuthor(int topAuthor) {

 

  this._topAuthor= topAuthor

 

 }

 

 ~TopAuthor() {

 

  // Destructor code to free unmanaged resources.

 

  // Implicitly creates a Finalize method

 

 }

 

}

  Objects

  VB.NET

Dim author As TopAuthor = New TopAuthor

 

With author

 

 .Name = "Steven"

 

 .AuthorRanking = 3

 

End With

 

author.Rank("Scott")

 

author.Demote() 'Calling Shared method

 

'or

 

TopAuthor.Rank()

 

Dim author2 As TopAuthor = author 'Both refer to same object

 

author2.Name = "Joe"

 

System.Console.WriteLine(author2.Name) 'Prints Joe

 

author = Nothing 'Free the object

 

If author Is Nothing Then _

 

 author = New TopAuthor

 

Dim obj As Object = New TopAuthor

 

If TypeOf obj Is TopAuthor Then _

 

 System.Console.WriteLine("Is a TopAuthor object.")

  C#

TopAuthor author = new TopAuthor();

 

//No "With" construct

 

author.Name = "Steven";

 

author.AuthorRanking = 3;

 

author.Rank("Scott");

 

TopAuthor.Demote() //Calling static method

 

TopAuthor author2 = author //Both refer to same object

 

author2.Name = "Joe";

 

System.Console.WriteLine(author2.Name) //Prints Joe

 

author = null //Free the object

 

if (author == null)

 

 author = new TopAuthor();

 

Object obj = new TopAuthor();

 

if (obj is TopAuthor)

 

 SystConsole.WriteLine("Is a TopAuthor object.");

  Structs

  VB.NET

Structure AuthorRecord

 

 Public name As String

 

 Public rank As Single

 

 Public Sub New(ByVal name As String, ByVal rank As Single)

 

  Me.name = name

 

  Me.rank = rank

 

 End Sub

 

End Structure

 

Dim author As AuthorRecord = New AuthorRecord("Steven", 8.8)

 

Dim author2 As AuthorRecord = author

 

author2.name = "Scott"

 

System.Console.WriteLine(author.name) 'Prints Steven

 

System.Console.WriteLine(author2.name) 'Prints Scott

  C#

struct AuthorRecord {

 

 public string name;

 

 public float rank;

 

 public AuthorRecord(string name, float rank) {

 

  this.name = name;

 

  this.rank = rank;

 

 }

 

}

 

AuthorRecord author = new AuthorRecord("Steven", 8.8);

 

AuthorRecord author2 = author

 

author.name = "Scott";

 

SystemConsole.WriteLine(author.name); //Prints Steven

 

System.Console.WriteLine(author2.name); //Prints Scott

  Properties

  VB.NET

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

  C#

private int _size;

 

public int Size {

 

 get {

 

  return _size;

 

 }

 

 set {

 

  if (value < 0)

 

   _size = 0;

 

  else

 

   _size = value;

 

 }

 

}

 

foo.Size++;

  Delegates / Events

  VB.NET

Delegate Sub MsgArrivedEventHandler(ByVal message

 

As String)

 

Event MsgArrivedEvent As MsgArrivedEventHandler

 

'or to define an event which declares a

 

'delegate implicitly

 

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

 

'WithEvents can't be used on local variable

 

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

  C#

delegate void MsgArrivedEventHandler(string message);

 

event MsgArrivedEventHandler MsgArrivedEvent;

 

//Delegates must be used with events in C#

 

MsgArrivedEvent += new MsgArrivedEventHandler

 

 (My_MsgArrivedEventCallback);

 

//Throws exception if obj is null

 

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 I/O

  VB.NET

'Special character constants

 

vbCrLf, vbCr, vbLf, vbNewLine

 

vbNullString

 

vbTab

 

vbBack

 

vbFormFeed

 

vbVerticalTab

 

""

 

Chr(65) 'Returns 'A'

 

System.Console.Write("What's your name? ")

 

Dim name As String = System.Console.ReadLine()

 

System.Console.Write("How old are you? ")

 

Dim age As Integer = Val(System.Console.ReadLine())

 

System.Console.WriteLine("{0} is {1} years old.", name, age)

 

'or

 

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

 

Dim c As Integer

 

c = System.Console.Read() 'Read single char

 

System.Console.WriteLine(c) 'Prints 65 if user enters "A"

  C#

//Escape sequences

 

n, r

 

t

 

Convert.ToChar(65)

 

//Returns 'A' - equivalent to Chr(num) in VB

 

// or

 

(char) 65

 

System.Console.Write("What's your name? ");

 

string name = SYstem.Console.ReadLine();

 

System.Console.Write("How old are you? ");

 

int age = Convert.ToInt32(System.Console.ReadLine());

 

System.Console.WriteLine("{0} is {1} years old.",

 

  name, age);

 

//or

 

System.Console.WriteLine(name + " is " +

 

  age + " years old.");

 

int c = System.Console.Read(); //Read single char

 

System.Console.WriteLine(c);

 

//Prints 65 if user enters "A"

  File I/O

  VB.NET

Imports System.IO

 

'Write out to text file

 

Dim writer As StreamWriter = File.CreateText

 

 ("c:myfile.txt")

 

writer.WriteLine("Out to file.")

 

writer.Close()

 

'Read all lines from text file

 

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

 

'Write out to binary file

 

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

 

'Read from binary file

 

Dim binReader As New BinaryReader(File.OpenRead

 

 ("c:myfile.dat"))

 

str = binReader.ReadString()

 

num = binReader.ReadInt32()

 

binReader.Close()

  C#

using System.IO;

 

//Write out to text file

 

StreamWriter writer = File.CreateText

 

 ("c:myfile.txt");

 

writer.WriteLine("Out to file.");

 

writer.Close();

 

//Read all lines from text file

 

StreamReader reader = File.OpenText

 

 ("c:myfile.txt");

 

string line = reader.ReadLine();

 

while (line != null) {

 

 Console.WriteLine(line);

 

 line = reader.ReadLine();

 

}

 

reader.Close();

 

//Write out to binary file

 

string str = "Text data";

 

int num = 123;

 

BinaryWriter binWriter = new BinaryWriter(File.OpenWrite

 

 ("c:myfile.dat"));

 

binWriter.Write(str);

 

binWriter.Write(num);

 

binWriter.Close();

 

//Read from binary file

 

BinaryReader binReader = new BinaryReader(File.OpenRead

 

 ("c:myfile.dat"));

 

str = binReader.ReadString();

 

num = binReader.ReadInt32();

 

binReader.Close();

 



相关教程