| « | November 2025 | » |  | 日 | 一 | 二 | 三 | 四 | 五 | 六 |   |  |  |  |  |  | 1 |  2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | 25 | 26 | 27 | 28 | 29 | 30 |  |  |  |  |  |  |  |  
  |   
| 统计 |  
blog名称:小雨 日志总数:262 评论数量:1273 留言数量:15 访问次数:4691474 建立时间:2005年1月8日 |   
  |     
 
  | 
W3CHINA Blog首页    管理页面    写新日志    退出
   
 [知识积累]VB.NET and C# 比较 |  
 http://dev.csdn.net/article/25/25324.shtm
VB.NET
C#
Comments
' Single line onlyRem Single line only 
// Single line/* Multiple    line  *//// XML comments on single line/** XML comments on multiple lines */
Data Types
Value TypesBooleanByteChar   (example: "A"c)Short, Integer, LongSingle, DoubleDecimalDate
Reference TypesObjectString
Dim x As Integer Console.WriteLine(x.GetType())     ' Prints System.Int32 Console.WriteLine(TypeName(x))  ' Prints Integer
' Type conversionDim numDecimal As Single = 3.5 Dim numInt As IntegernumInt = CType(numDecimal, Integer)   ' set to 4 (Banker's rounding)numInt = CInt(numDecimal)  ' same result as CTypenumInt = Int(numDecimal)    ' set to 3 (Int function truncates the decimal)
Value Typesboolbyte, sbytechar   (example: 'A')short, ushort, int, uint, long, ulongfloat, doubledecimalDateTime   (not a built-in C# type)
Reference Typesobjectstring
int x;Console.WriteLine(x.GetType());    // Prints System.Int32Console.WriteLine(typeof(int));      // Prints System.Int32 
// Type conversion double numDecimal = 3.5; int numInt = (int) numDecimal;   // set to 3  (truncates decimal)
Constants
Const MAX_STUDENTS As Integer = 25
const int MAX_STUDENTS = 25;
Enumerations
Enum Action   Start   [Stop]   ' Stop is a reserved word  Rewind   Forward End Enum Enum Status   Flunk = 50   Pass = 70   Excel = 90 End EnumDim a As Action = Action.Stop If a <> Action.Start Then Console.WriteLine(a)     ' Prints 1 Console.WriteLine(Status.Pass)     ' Prints 70 Dim s As Type = GetType(Status) Console.WriteLine([Enum].GetName(s, Status.Pass))    ' 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(Status.Pass);    // Prints Pass
Operators
Comparison=  <  >  <=  >=  <>
Arithmetic+  -  *  /Mod\  (integer division)^  (raise to a power)
Assignment=  +=  -=  *=  /=  \=  ^=  <<=  >>=  &=
BitwiseAnd  AndAlso  Or  OrElse  Not  <<  >>
LogicalAnd  AndAlso  Or  OrElse  Not
Note: AndAlso and OrElse are for short-circuiting 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+
Choices 
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 lineIf x <> 100 Then x *= 5 : y *= 2  
' or to break up any long single command use _If whenYouHaveAReally < 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
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 
greeting = age < 20 ? "What's up?" : "Hello";
if (x != 100) {    // Multiple statements must be enclosed in {}  x *= 5;  y *= 2;}
No need for _ or : since ; is used to terminate each statement.
if (x > 5)   x *= y; else if (x == 5)   x += y; else if (x < 10)   x -= y; else   x /= y;
switch (color) {                          // Must be integer or string  case "pink":  case "red":    r++;    break;        // break is mandatory; no fall-through  case "blue":   b++;   break;  case "green": g++;   break;  default:    other++;   break;       // break necessary on default} 
Loops 
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 loopingDim names As String() = {"Fred", "Sue", "Barney"} For Each s As String In names   Console.WriteLine(s) Next 
Pre-test Loops:   
// no "until" keywordwhile (i < 10)   i++;for (i = 2; i < = 10; i += 2)   Console.WriteLine(i);
Post-test Loop:do   i++; while (i < 10);// Array or collection loopingstring[] names = {"Fred", "Sue", "Barney"};foreach (string s in names)  Console.WriteLine(s);
Arrays 
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 elementsDim 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.5Dim 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 arraystring[] names = new string[5];names[0] = "David";names[5] = "Bobby";   // Throws System.IndexOutOfRangeException // C# doesn't 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; 
Functions
' 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 SubSayHello("Strangelove", "Dr.")SayHello("Madonna")
// 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 initializingTestFunc(a, ref b, out c);Console.WriteLine("{0} {1} {2}", a, b, c);  // 1 2 5
// Accept variable number of argumentsint 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't support optional arguments/parameters.  Just create two different versions of the same function. */  void SayHello(string name, string prefix) {  Console.WriteLine("Greetings, " + prefix + " " + name);} void SayHello(string name) {   SayHello(name, ""); } 
Exception Handling 
' Deprecated unstructured error handlingOn Error GoTo MyErrorHandler...MyErrorHandler: Console.WriteLine(Err.Description)Dim ex As New Exception("Something is really wrong.") Throw  ex  
Try   y = 0  x = 10 / yCatch ex As Exception When y = 0 ' Argument and When is optional  Console.WriteLine(ex.Message) Finally   Beep() End Try
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 {   // Must use unmanaged MessageBeep API function to beep } 
Namespaces 
Namespace Harding.Compsci.Graphics   ...End Namespace
' or
Namespace Harding   Namespace Compsci     Namespace Graphics       ...    End Namespace   End Namespace End Namespace
Import Harding.Compsci.Graphics 
namespace Harding.Compsci.Graphics {  ...} 
// or 
namespace Harding {  namespace Compsci {    namespace Graphics {      ...    }  }} 
using Harding.Compsci.Graphics; 
Classes / Interfaces 
Accessibility keywords PublicPrivateFriend                    ProtectedProtected FriendShared
' InheritanceClass FootballGame  Inherits Competition  ...End Class 
' Interface definitionInterface IAlarmClock   ...End Interface
// Extending an interface Interface IAlarmClock   Inherits IClock  ...End Interface
// Interface implementationClass WristWatch   Implements IAlarmClock, ITimer    ...End Class 
Accessibility keywords publicprivateinternalprotectedprotected internalstatic
// Inheritanceclass FootballGame : Competition {  ...} 
// Interface definitioninterface IAlarmClock {  ...} 
// Extending an interface interface IAlarmClock : IClock {  ...} 
// Interface implementationclass WristWatch : IAlarmClock, ITimer {   ...} 
Constructors / Destructors
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  Protected Overrides Sub Finalize ()    ' Desctructor code to free unmanaged resources     MyBase.Finalize()   End SubEnd Class
class SuperHero {  private int _powerLevel;  public SuperHero() {     _powerLevel = 0;  }  public SuperHero(int powerLevel) {    this._powerLevel= powerLevel;   }  ~SuperHero() {    // Destructor code to free unmanaged resources.    // Implicitly creates a Finalize method  }}
Objects 
Dim hero As SuperHero = New SuperHero With hero   .Name = "SpamMan"   .PowerLevel = 3 End With hero.Defend("Laura Jones") hero.Rest()     ' Calling Shared method' orSuperHero.Rest() 
Dim hero2 As SuperHero = hero  ' Both refer to 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.")
SuperHero hero = new SuperHero(); // No "With" constructhero.Name = "SpamMan"; hero.PowerLevel = 3; 
hero.Defend("Laura Jones");SuperHero.Rest();   // Calling static method
SuperHero hero2 = hero;   // Both refer to 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.");
Structs
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 BobConsole.WriteLine(stu2.name);   // Prints Sue
Properties
Private _size As IntegerPublic 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
private int _size;public int Size {   get {     return _size;   }   set {     if (value < 0)       _size = 0;     else       _size = value;   } } 
foo.Size++; 
Delegates / Events
Delegate Sub MsgArrivedEventHandler(ByVal message As String)
Event MsgArrivedEvent As MsgArrivedEventHandler
' or to define an event which declares a delegate implicitlyEvent MsgArrivedEvent(ByVal message As String) 
AddHandler MsgArrivedEvent, AddressOf My_MsgArrivedCallback ' Won't throw an exception if obj is NothingRaiseEvent MsgArrivedEvent("Test message") RemoveHandler MsgArrivedEvent, AddressOf My_MsgArrivedCallback
Imports System.Windows.Forms
Dim WithEvents MyButton As Button   ' WithEvents can't be used on local variableMyButton = 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 nullMsgArrivedEvent -= 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
Special character constantsvbCrLf, vbCr, vbLf, vbNewLine vbNullString vbTab vbBack vbFormFeed vbVerticalTab"" Chr(65)  ' Returns 'A'
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" 
Escape sequences\n, \r\t\\\"
Convert.ToChar(65)  // Returns 'A' - equivalent to Chr(num) in VB// or(char) 65
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);// orConsole.WriteLine(name + " is " + age + " years old."); 
int c = Console.Read();  // Read single charConsole.WriteLine(c);    // Prints 65 if user enters "A"
File I/O
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)   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();
Page last modified:
 04/20/2006 16:39:28 01/14/2004 05:34:59 Please send any corrections or comments to fmccown@harding.edu.Home 
  |  
  阅读全文(3789) | 回复(3) | 编辑 | 精华 |     
| overload and overriable |  
| 
 zj(游客)发表评论于2006/10/7 21:13:51  |    Module Module1    Public Class farther        Public Overridable Sub eat()            MsgBox("farther eat")        End Sub    End Class    Public Class son        Inherits farther        Public Overrides Sub eat()            MsgBox("son eat")        End Sub    End Class    Public Class sonson        Inherits son        Public Overloads Sub eat()            MsgBox("sonson eat")        End Sub    End Class    Sub Main()        Dim o As farther        o = New sonson        o.eat() ' MsgBox("son eat")    End SubEnd Module
'''''''''''''''''''''''''''''''''''''''''
Module Module1    Public Class farther        Public Overridable Sub eat()            MsgBox("farther eat")        End Sub    End Class    Public Class son        Inherits farther        Public Overrides Sub eat()            MsgBox("son eat")        End Sub    End Class    Public Class sonson        Inherits son        Public Overrides Sub eat()            MsgBox("sonson eat")        End Sub    End Class    Sub Main()        Dim o As farther        o = New sonson        o.eat() ' MsgBox("sonson eat")    End SubEnd Module
 
 
 
  |  
  个人主页 | 引用回复 | 主人回复 | 返回 | 编辑 | 删除 |     
| 回复:VB.NET and C# 比较 |  
| 
 shadows and overload(游客)发表评论于2006/10/5 15:17:18  |    Module Module1    Public Class farther        Public Sub ff()            MsgBox("ss")        End Sub        Public Function ff(ByVal ss As Integer)            MsgBox("ss" & ss)        End Function
    End Class        Public Class son        Inherits farther               Public Overloads Sub ff(ByVal ss As Integer)            MsgBox("son")        End Sub        Public Sub fff()            ff() '正确            ff(1) '正确        End Sub    End Class    Sub Main()        Dim o As son        o = New son        o.fff()
    End Sub
End Module
 
Module Module1    Public Class farther        Public Sub ff()            MsgBox("ss")        End Sub        Public Function ff(ByVal ss As Integer)            MsgBox("ss" & ss)        End Function
    End Class        Public Class son        Inherits farther               Public Shadows Sub ff(ByVal ss As Integer)            MsgBox("son")        End Sub        Public Sub fff()            ' ff()  错误            ff(1)        End Sub    End Class    Sub Main()        Dim o As son        o = New son        o.fff()
    End Sub
End Module
  |  
| 个人主页 | 引用回复 | 主人回复 | 返回 | 编辑 | 删除 |     
| 回复:VB.NET and C# 比较 |  
| 
 vb (游客)发表评论于2006/10/1 21:10:49  |    Public Class Class1    Protected Function sun()        MsgBox("hello")    End FunctionEnd ClassPublic Class Class2    Inherits Class1    Friend Function suns()        MyBase.sun() '可以调用
        Dim ss As Class1 = New Class1        ss.sun() '不可以调用    End FunctionEnd Class
  |  
| 个人主页 | 引用回复 | 主人回复 | 返回 | 编辑 | 删除 |   
  »  1 »  
 |