开发者社区> zting科技> 正文
阿里云
为了无法计算的价值
打开APP
阿里云APP内打开

[转]VB.NET和C#之间的语法不同比较,已经更新到.NET4.0了

简介:
+关注继续查看

今天在看30个asp.net学习必须收藏的网站的时候看到了这篇文章,感觉很好,以前都是自己看MSDN然后自己比较,现在又了这个感觉方便多了,很值得收藏!

这个是原文地址:VB.NET and C# Comparison

正文开始:

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" 

         '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 + "!"); 
      } 
   } 
}
VB.NET Comments C#
' Single line only 
REM Single line only 
''' <summary>XML comments</summary>

// Single line 
/* Multiple 
    line  */ 
/// <summary>XML comments on single line</summary> 
/** <summary>XML comments on multiple lines</summary> */

VB.NET Data Types C#

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

Reference Types 
Object 
String

Initializing 
Dim correct As Boolean = True 
Dim b As Byte = &H2A   'hex or &O52 for octal 
Dim person As Object = Nothing 
Dim name As String = "Dwight" 
Dim grade As Char = "B"c 
Dim today As Date = #12/31/2007 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

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

Type Information 
Dim x As Integer 
Console.WriteLine(x.GetType())          ' Prints System.Int32 
Console.WriteLine(GetType(Integer))   ' Prints System.Int32 
Console.WriteLine(TypeName(x))        ' Prints Integer 

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

Type Conversion / Casting 
Dim d As Single = 3.5 
Dim i As Integer = CType(d, Integer)   ' set to 4 (Banker's rounding) 
i = CInt(d)  ' same result as CType 
i = Int(d)    ' set to 3 (Int function truncates the decimal) 

Dim o As Object = 2 
i = DirectCast(o, Integer)   ' Throws InvalidCastException if type cast fails 

Dim s As New Shape 
Dim c As Circle = TryCast(s, Circle)   ' Returns Nothing if type cast fails

Value Types 
bool 
byte, sbyte 
char 
short, ushort, int, uint, long, ulong 
float, double 
decimal 
DateTime   (not a built-in C# type)

Reference Types 
object 
string

Initializing 
bool correct = true; 
byte b = 0x2A;   // hex 
object person = null; 
string name = "Dwight"; 
char grade = 'B'; 
DateTime today = DateTime.Parse("12/31/2007 12:15:00"); 
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;

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

Type Information 
int x; 
Console.WriteLine(x.GetType());              // Prints System.Int32 
Console.WriteLine(typeof(int));               // Prints System.Int32 
Console.WriteLine(x.GetType().Name);   // prints Int32 

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

Type Conversion / Casting 
float d = 3.5f; 
i = Convert.ToInt32(d);     // Set to 4 (rounds) 
int i = (int)d;     // set to 3 (truncates decimal) 


object o = 2; 
int i = (int)o;   // Throws InvalidCastException if type cast fails 

Shape s = new Shape(); 
Circle c = s as Circle;   // Returns null if type cast fails

VB.NET Constants C#
Const MAX_STUDENTS As Integer = 25

' Can set to a const or var; may be initialized in a constructor 
ReadOnly MIN_DIAMETER As Single = 4.93

const int MAX_STUDENTS = 25;

// Can set to a const or var; may be initialized in a constructor 
readonly float MIN_DIAMETER = 4.93f;

VB.NET Enumerations C#
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
VB.NET Operators C#

Comparison 
=  <  >  <=  >=  <>

Arithmetic 
+  -  *  / 
Mod 
\  (integer division) 
^  (raise to a power)

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

Bitwise 
And   Or   Xor   Not   <<   >>

Logical 
AndAlso   OrElse   And   Or   Xor   Not

Note: AndAlso and OrElse perform short-circuit logical evaluations

String Concatenation 
&

Comparison 
==  <  >  <=  >=  !=

Arithmetic 
+  -  *  / 
%  (mod) 
/  (integer division if both operands are ints) 
Math.Pow(x, y)

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

Bitwise 
&   |   ^   ~   <<   >>

Logical 
&&   ||   &   |   ^   !

Note: && and || perform short-circuit logical evaluations

String Concatenation 
+

VB.NET Choices C#

' Ternary/Conditional operator (Iff evaluates 2nd and 3rd expressions) 
greeting = If(age < 20, "What's up?", "Hello")

' One line doesn't require "End If" 
If age < 20 Then greeting = "What's up?" 
If age < 20 Then greeting = "What's up?" Else greeting = "Hello"

' Use : to put two commands on same line 
If x <> 100 AndAlso y < 5 Then x *= 5 : y *= 2 

' Preferred 
If x <> 100 AndAlso y < 5 Then 
  x *= 5 
  y *= 2 
End If

' To break up any long single line use _ 
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   ' Must be a primitive data type 
  Case "pink", "red" 
    r += 1 
  Case "blue" 
    b += 1 
  Case "green" 
    g += 1 
  Case Else 
    other += 1 
End Select

// Ternary/Conditional operator 
greeting = age < 20 ? "What's up?" : "Hello";

if (age < 20) 
  greeting = "What's up?"; 
else 
  greeting = "Hello";

// Multiple statements must be enclosed in {} 
if (x != 100 && y < 5) {    
  x *= 5; 
  y *= 2; 
}



No need for _ or : since ; is used to terminate each statement.





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



// Every case must end with break or goto case 
switch (color) {                          // Must be integer or string 
  case "pink": 
  case "red":    r++;    break; 
  case "blue":   b++;   break; 
  case "green": g++;   break; 
  default:    other++;  break;       // break necessary on default 
}

VB.NET Loops C#
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

'  Array or collection looping 
Dim names As String() = {"Fred", "Sue", "Barney"} 
For Each s As String In names 
  Console.WriteLine(s) 
Next

' Breaking out of loops 
Dim i As Integer = 0 
While (True) 
  If (i = 5) Then Exit While 
  i += 1 
End While 


' Continue to next iteration 
For i = 0 To 4 
  If i < 4 Then Continue For 
  Console.WriteLine(i)   ' Only prints 4 
Next

Pre-test Loops:  

// no "until" keyword 
while (c < 10) 
  c++; 


for (c = 2; c <= 10; c += 2) 
  Console.WriteLine(c);


Post-test Loop: 

do 
  c++; 
while (c < 10); 


// Array or collection looping 
string[] names = {"Fred", "Sue", "Barney"}; 
foreach (string s in names) 
  Console.WriteLine(s);


// Breaking out of loops 
int i = 0; 
while (true) { 
  if (i == 5) 
    break; 
  i++; 
}

// Continue to next iteration 
for (i = 0; i < 5; i++) { 
  if (i < 4) 
    continue; 
  Console.WriteLine(i);   // Only prints 4 
}

VB.NET Arrays C#

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) = "David" 
names(5) = "Bobby"  ' Throws System.IndexOutOfRangeException 

' 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

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] = "David"; 
names[5] = "Bobby";   // Throws System.IndexOutOfRangeException 


// C# can't dynamically resize an array.  Just copy into new array. 
string[] names2 = new string[7]; 
Array.Copy(names, names2, names.Length);   // or names.CopyTo(names2, 0); 

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;

VB.NET Functions C#

' 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

Dim a = 1, b = 1, c As Integer   ' c set to zero by default  
TestFunc(a, b, c) 
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 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 = "") 
  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);  // 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# 4.0 supports optional parameters. Previous versions required function overloading. */  
void SayHello(string name, string prefix = "") { 
  Console.WriteLine("Greetings, " + prefix + " " + name); 

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

VB.NET Strings C#

Special character constants (all also accessible from ControlChars class) 
vbCrLf, vbCr, vbLf, vbNewLine 
vbNullString 
vbTab 
vbBack 
vbFormFeed 
vbVerticalTab 
""

' String concatenation (use & or +) 
Dim school As String = "Harding" & vbTab 
school = school & "University" ' school is "Harding (tab) University"

' Chars 
Dim letter As Char = school.Chars(0)   ' letter is H 
letter = "Z"c                                         ' letter is Z 
letter = Convert.ToChar(65)                ' letter is A 
letter = Chr(65)                                 ' same thing 
Dim word() As Char = school.ToCharArray() ' word holds Harding

' No string literal operator 
Dim msg As String = "File is c:\temp\x.dat" 


' String comparison 
Dim mascot As String = "Bisons" 
If (mascot = "Bisons") Then   ' true 
If (mascot.Equals("Bisons")) Then   ' true 
If (mascot.ToUpper().Equals("BISONS")) Then  ' true 
If (mascot.CompareTo("Bisons") = 0) Then   ' true

' String matching with Like - Regex is more powerful 
If ("John 3:16" Like "Jo[Hh]? #:*") Then   'true

' Substring 
s = mascot.Substring(2, 3)) ' s is "son"

' Replacement 
s = mascot.Replace("sons", "nomial")) ' s is "Binomial"

' Split 
Dim names As String = "Michael,Dwight,Jim,Pam" 
Dim parts() As String = names.Split(",".ToCharArray())   ' One name in each slot

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

' Integer to String 
Dim x As Integer = 2 
Dim y As String = x.ToString()     ' y is "2"

' String to Integer 
Dim x As Integer = Convert.ToInt32("-5")     ' x is -5

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

Escape sequences 
\r    // carriage-return 
\n    // line-feed 
\t    // tab 
\\    // backslash 
\"    // quote 


// String concatenation 
string school = "Harding\t"; 
school = school + "University";   // school is "Harding (tab) University"

// Chars 
char letter = school[0];            // letter is H 
letter = 'Z';                               // letter is Z 
letter = Convert.ToChar(65);     // letter is A 
letter = (char)65;                    // same thing 
char[] word = school.ToCharArray();   // word holds Harding

// String literal 
string msg = @"File is c:\temp\x.dat"; 
// same as 
string msg = "File is c:\\temp\\x.dat";

// String comparison 
string mascot = "Bisons"; 
if (mascot == "Bisons")    // true 
if (mascot.Equals("Bisons"))   // true 
if (mascot.ToUpper().Equals("BISONS"))   // true 
if (mascot.CompareTo("Bisons") == 0)    // true

// String matching - No Like equivalent, use Regex


// Substring 
s = mascot.Substring(2, 3))     // s is "son"

// Replacement 
s = mascot.Replace("sons", "nomial"))     // s is "Binomial"

// Split 
string names = "Michael,Dwight,Jim,Pam"; 
string[] parts = names.Split(",".ToCharArray());   // One name in each slot

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

// int to string 
int x = 2; 
string y = x.ToString();     // y is "2"

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

 

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

VB.NET Regular Expressions C#

Imports System.Text.RegularExpressions

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

' Find and remember all matching patterns 
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)     ' Matches 305-1881 and 305-1818 
While m.Success 
    Console.WriteLine("Found number: " & m.Groups(1).Value & " at position " _ 
            & m.Groups(1).Index.ToString) 
    m = m.NextMatch() 
End While

' Remeber multiple parts of matched pattern 
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)       ' 03 
    Console.WriteLine("Min: " & m.Groups(2).ToString)         ' 15 
    Console.WriteLine("Ending: " & m.Groups(3).ToString)   ' pm 
End If

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

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

' Split a string based on a pattern 
Dim names As String = "Michael, Dwight, Jim, Pam" 
Dim r As New Regex(",\s*") 
Dim parts() As String = r.Split(names)   ' One name in each slot

using System.Text.RegularExpressions;

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


// Find and remember all matching patterns 
string s = "My number is 305-1881, not 305-1818."; 
Regex r = new Regex("(\\d+-\\d+)"); 
// Matches 305-1881 and 305-1818 
for (Match m = r.Match(s); m.Success; m = m.NextMatch()) 
    Console.WriteLine("Found number: " + m.Groups[1] + " at position " + 
        m.Groups[1].Index);



// Remeber multiple parts of matched pattern 
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]);       // 03 
    Console.WriteLine("Min: " + m.Groups[2]);         // 15 
    Console.WriteLine("Ending: " + m.Groups[3]);   // pm 
}

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

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

// Split a string based on a pattern 
string names = "Michael, Dwight, Jim, Pam"; 
Regex r = new Regex(@",\s*"); 
string[] parts = r.Split(names);   // One name in each slot

VB.NET Exception Handling C#

' Throw an exception 
Dim ex As New Exception("Something is really wrong.") 
Throw  ex 

' Catch an exception 
Try  
  y = 0 
  x = 10 / y 
Catch ex As Exception When y = 0 ' Argument and When is optional 
  Console.WriteLine(ex.Message) 
Finally 
  Beep() 
End Try 

' Deprecated unstructured error handling 
On Error GoTo MyErrorHandler 
... 
MyErrorHandler: Console.WriteLine(Err.Description)

// Throw an exception 
Exception up = new Exception("Something is really wrong."); 
throw up;  // ha ha

// Catch an exception 
try {  
  y = 0; 
  x = 10 / y; 

catch (Exception ex) {   // Argument is optional, no "When" keyword  
  Console.WriteLine(ex.Message); 

finally { 
  Microsoft.VisualBasic.Interaction.Beep(); 
}

VB.NET Namespaces C#

Namespace Harding.Compsci.Graphics  
  ... 
End Namespace

' or

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

Imports Harding.Compsci.Graphics

namespace Harding.Compsci.Graphics { 
  ... 
}

// or

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

using Harding.Compsci.Graphics;

VB.NET Classes / Interfaces C#

Access Modifiers 
Public 
Private 
Friend 
Protected 
Protected Friend

Class Modifiers 
MustInherit 
NotInheritable 

Method Modifiers 
MustOverride 
NotInheritable 
Shared 
Overridable

' All members are Shared 
Module

' Inheritance 
Class FootballGame 
  Inherits Competition 
  ... 
End Class 

' Interface definition 
Interface IAlarmClock  
  ... 
End Interface

// Extending an interface 
Interface IAlarmClock 
  Inherits IClock 
  ... 
End Interface

// Interface implementation 
Class WristWatch  
  Implements IAlarmClock, ITimer  
   ... 
End Class 

Access Modifiers 
public 
private 
internal 
protected 
protected internal

Class Modifiers 
abstract 
sealed 
static

Method Modifiers 
abstract 
sealed 
static 
virtual

No Module equivalent - just use static class 

// Inheritance 
class FootballGame : Competition { 
  ... 
}


// Interface definition
 
interface IAlarmClock { 
  ... 
}

// Extending an interface 
interface IAlarmClock : IClock { 
  ... 
}


// Interface implementation
 
class WristWatch : IAlarmClock, ITimer { 
   ... 
}

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() 
    ' 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 { 
  private int powerLevel; 

  public SuperHero() { 
     powerLevel = 0; 
  } 

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

  static SuperHero() { 
    // Static constructor invoked before 1st instance is created 
  } 

  ~SuperHero() { 
    // Destructor implicitly creates a Finalize method 
  } 
}

VB.NET Using Objects C#

Dim hero As SuperHero = New SuperHero 
' or 
Dim hero As New SuperHero

With hero 
  .Name = "SpamMan" 
  .PowerLevel = 3 
End With

hero.Defend("Laura Jones") 
hero.Rest()     ' Calling Shared method 
' or 
SuperHero.Rest()

Dim hero2 As SuperHero = hero  ' Both reference the same object 
hero2.Name = "WormWoman" 
Console.WriteLine(hero.Name)   ' Prints WormWoman

hero = Nothing    ' Free the object

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

' Mark object for quick disposal 
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(); 



// No "With" construct 
hero.Name = "SpamMan"; 
hero.PowerLevel = 3; 


hero.Defend("Laura Jones"); 
SuperHero.Rest();   // Calling static method



SuperHero hero2 = hero;   // Both reference the same object 
hero2.Name = "WormWoman"; 
Console.WriteLine(hero.Name);   // Prints WormWoman

hero = null ;   // Free the object

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); 
}
VB.NET Structs C#

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

stu2.name = "Sue" 
Console.WriteLine(stu.name)    ' Prints Bob 
Console.WriteLine(stu2.name)  ' Prints Sue

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); 
StudentRecord stu2 = stu;   

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

VB.NET Properties C#

' Auto-implemented properties are new to VB10 
Public Property Name As String 
Public Property Size As Integer = -1     ' Default value, Get and Set both Public

' Traditional property implementation 
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

' Read-only property 
Private mPowerLevel As Integer 
Public ReadOnly Property PowerLevel() As Integer 
    Get 
        Return mPowerLevel 
    End Get 
End Property

' Write-only 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

// Auto-implemented properties 
public string Name { get; set; } 
public int Size { get; protected set; }     // Set default value in constructor 

// Traditional property implementation 
private string name; 
public string Name { 
  get { 
    return name; 
  } 
  set { 
    name = value; 
  } 
}

// Read-only property 
private int powerLevel; 
public int PowerLevel { 
  get { 
    return powerLevel; 
  } 
}

// Write-only property 
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

' 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

Dim WithEvents MyButton As Button   ' WithEvents can't be used on local variable 
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;

// Delegates must be used with events in C# 


MsgArrivedEvent += new MsgArrivedEventHandler(My_MsgArrivedEventCallback); 
MsgArrivedEvent("Test message");    // Throws exception if obj is null 
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); 
}

VB.NET Generics C#

' Enforce accepted data type at compile-time 
Dim numbers As New List(Of Integer
numbers.Add(2) 
numbers.Add(4) 
DisplayList(Of Integer)(numbers)

' Subroutine can display any type of List 
Sub DisplayList(Of T)(ByVal list As List(Of T
    For Each item As T In list 
        Console.WriteLine(item) 
    Next 
End Sub

' Class works on any data type 
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

' Limit T to only types that implement IComparable 
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

// Enforce accepted data type at compile-time 
List<int> numbers = new List<int>(); 
numbers.Add(2); 
numbers.Add(4); 
DisplayList<int>(numbers);

// Function can display any type of List 
void DisplayList<T>(List<T> list) { 
    foreach (T item in list) 
        Console.WriteLine(item); 


// Class works on any data type 
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)]; 
    } 
}

// Limit T to only types that implement IComparable 
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; 
}

VB.NET Console I/O C#

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)  
' or 
Console.WriteLine(name & " is " & age & " years old.") 

Dim c As Integer 
c = Console.Read()    ' Read single char 
Console.WriteLine(c)   ' Prints 65 if user enters "A"

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); 
// or 
Console.WriteLine(name + " is " + age + " years old.");


int c = Console.Read();  // Read single char 
Console.WriteLine(c);    // Prints 65 if user enters "A"

VB.NET File I/O C#

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

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




本文转自kyo-yo博客园博客,原文链接:http://www.cnblogs.com/kyo-yo/archive/2010/06/01/vbnet-csharp-comparison.html,如需转载请自行联系原作者


版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。

相关文章
.net必问的面试题系列之基本概念和语法
.net必问的面试题系列之基本概念和语法上个月离职了,这几天整理了一些常见的面试题,整理成一个系列给大家分享一下,机会是给有准备的人,面试造火箭,工作拧螺丝,不慌,共勉。1.net必问的面试题系列之基本概念和语法2.
927 0
.NET中正则表达式的语法用例
字符匹配语法:    字符语法 语法解释 语法例子 \d 匹配数字(0~9) ‘\d’匹配8,不匹配12; \D 匹配非数字 ‘\D’匹配c,不匹配3; \w 匹配任意单字符 ‘\w\w’ 匹配A3,不匹配@3; \W 匹配非单...
701 0
C++开发者快速学习Objective-C语言核“.NET研究”心语法
  本文将Objective-C讨论了语言的核心语法。这部分开始详述一些具体的语法。正如你期待的一样,涉及到了定义和类。   类并不是特殊的   在Smalltalk中,类是具有一些特性的对象。在Objective-C中也一样。
830 0
QML基本“.NET研究”语法
  QML是什么? QML 是一中声明式语言,用来描述应用程序接口的――是什么样,有怎样的行为。在QML中,一个用户接口被指定为带有属性的对象是。 这个介绍主要面向只有很少或者没有编码经验的人。在QML中,JavaScript作为一种脚本语言被使用。
688 0
一起谈.NET技术,微软缘何认为VB与C#需要异步语法
  在过去几年间,多线程编程已经成为了一个热门话题。虽然我们长久以来一直都希望能有高速响应的用户界面,但实现这个愿望的工具却迟迟不见踪迹。对于大多数框架(包括.NET程序员所使用的那些框架)来说,对用户界面的更新仍然局限于单独一个线程,同时,硬件制造商已经转向了多核来代替更快的CPU。
704 0
一起谈.NET技术,ASP.NET MVC 3和Razor中的@helper 语法
  ASP.NET MVC 3支持一项名为“Razor”的新视图引擎选项(除了继续支持/加强现有的.aspx视图引擎外)。当编写一个视图模板时,Razor将所需的字符和击键数减少到最小,并保证一个快速、通畅的编码工作流。
658 0
ASP.NET MVC 3和Razor中的@helper “.NET研究”语法
  ASP.NET MVC 3支持一项名为“Razor”的新视图引擎选项(除了继续支持/加强现有的.aspx视图引擎外)。当编写一个视图模板时,Razor将所需的字符和击键数减少到最小,并保证一个快速、通畅的编码工作流。
602 0
微软缘何“.NET研究”认为VB与C#需要异步语法
  在过去几年间,多线程编程已经成为了一个热门话题。虽然我们长久以来一直都希望能有高速响应的用户界面,但实现这个愿望的工具却迟迟不见踪迹。对于大多数框架(包括.NET程序员所使用的那些框架)来说,对用户界面的更新仍然局限于单独一个线程,同时,硬件制造商已经转向了多核来代替更快的CPU。
659 0
.Net线程同步技术解读
C#开发者(面试者)都会遇到lock(Monitor),Mutex,Semaphore,SemaphoreSlim这四个与锁相关的C#类型,本文期望以最简洁明了的方式阐述四种对象的区别。
0 0
+关注
文章
问答
文章排行榜
最热
最新
相关电子书
更多
FLowFuzz A Framework
立即下载
低代码开发师(初级)实战教程
立即下载
阿里巴巴DevOps 最佳实践手册
立即下载