分享
 
 
 

VB.NETandC#差异

王朝学院·作者佚名  2016-08-27
窄屏简体版  字體: |||超大  

VB.NET

PRogram Structure

C#

Imports System

Namespace Hello Class HelloWorld Overloads Shared SubMain(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 voidMain(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 onlyRem Single line only

// Single line /* Multiple line */ ///xmlcomments on single line /** XML comments on multiple lines */

VB.NET

Data Types

C#

Value TypesBoolean Byte Char (example: "A"c)Short, Integer, Long Single, Double Decimal Date

Reference TypesObject String

DimxAsInteger Console.WriteLine(x.GetType()) ' Prints System.Int32Console.WriteLine(TypeName(x)) ' Prints Integer

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

Value Typesbool byte, sbyte char (example: 'A')short, ushort, int, uint, long, ulong float, double decimal DateTime (not a built-in C# type)

Reference Typesobject string

int x; Console.WriteLine(x.GetType()); // Prints System.Int32Console.WriteLine(typeof(int)); // Prints System.Int32

// Type conversionfloat d = 3.5f; int i =(int)d; // set to 3 (truncates decimal)

VB.NET

Constants

C#

Const MAX_STUDENTSAsInteger = 25 ' Can set to a const or var; may be initialized in a constructorReadOnlyMIN_DIAMETERAsSingle = 4.93

constint MAX_STUDENTS = 25; // Can set to a const or var; may be initialized in a constructorreadonlyfloat MIN_DIAMETER = 4.93f;

VB.NET

Enumerations

C#

EnumAction Start [Stop] ' Stop is a reservedWord Rewind ForwardEnd Enum

Enum Status Flunk = 50 Pass = 70 Excel= 90End EnumDim 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 70Console.WriteLine(Status.Pass.ToString()) ' Prints Pass

enumAction {Start, Stop, Rewind, Forward};enumStatus {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 70Console.WriteLine(Status.Pass); // Prints Pass

VB.NET

Operators

C#

Comparison= < > <= >= <>

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

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

BitwiseAnd Or Not << >>

LogicalAndAlso 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#

greeting =IIf(age < 20, "What's up?", "Hello")

' One line doesn't require "End If", no "Else"Iflanguage = "VB.NET"ThenlangType = "verbose"

' Use : to put two commands on same lineIfx <> 100 And y < 5Thenx *= 5:y *= 2

' PreferredIfx <> 100 And y < 5Then x *= 5 y *= 2End If

' or to break up any long single command use _If whenYouHaveAReally < longLine And itNeedsToBeBrokenInto2 > Lines Then_ UseTheUnderscore(charToBreakItUp)

'Ifx > 5Then x *= yElseIf x = 5Then x += yElseIfx < 10Then x -= yElse x /= yEnd If

Select Casecolor ' Must be a primitive data type Case"pink", "red" r += 1 Case"blue" b += 1 Case"green" g += 1 Case Else other += 1End Select

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

if(x != 100 && y < 5) { // 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;elseif (x == 5) x += y;elseif (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}

VB.NET

Loops

C#

Pre-test Loops:

Whilec < 10 c += 1End While

Do Untilc = 10 c += 1Loop

Do Whilec < 10 c += 1Loop

Forc = 2To10Step2 Console.WriteLine(c)Next

Post-test Loops:

Do c += 1Loop Whilec < 10

Do c += 1Loop Untilc = 10

' Array or collection loopingDim names As String() = {"Fred", "Sue", "Barney"}For Eachs As String Innames Console.WriteLine(s)Next

' Breaking out of loopsDim i As Integer = 0 While (True) If (i = 5) ThenExit While i += 1 End While

Pre-test Loops: // no "until" keywordwhile(c < 10) c++;

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

Post-test Loop:

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

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

// Breaking out of loopsint i = 0; while (true) { if (i == 5)

break; i++; }

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 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 Preservenames(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 arraystring[] 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) SubTestFunc(ByValx As Integer,ByRefy As Integer,ByRefz As Integer) x += 1 y += 1 z = 5End 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 argumentsFunctionSum(ByValParamArraynumsAsInteger()) As Integer Sum = 0 For Each i As Integer In nums Sum += i NextEnd 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 valueSubSayHello(ByVal name As String,OptionalByVal prefix As String = "") Console.WriteLine("Greetings, " & prefix & " " & name)End Sub

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

// Pass by value (in, default), reference (in/out), and reference (out)void TestFunc(int x,refint y,outint z) { x++; y++; z = 5; } int a = 1, b = 1, c; // c doesn't need initializingTestFunc(a,refb,outc); Console.WriteLine("{0} {1} {2}", a, b, c); // 1 2 5

// Accept variable number of argumentsint Sum(paramsint[] 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, ""); }

VB.NET

Strings

C#

Special character constantsvbCrLf, 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"

' CharsDim letter AsChar= school.Chars(0) ' letter is Hletter = Convert.ToChar(65) ' letter is Aletter =Chr(65) ' same thingDim word() As Char = school.ToCharArray()' word holds Harding

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

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

Console.WriteLine(mascot.Substring(2, 3))' Prints "son"

' String matchingIf ("John 3:16"Like"Jo[Hh]? #:*") Then 'true

Imports System.Text.RegularExpressions ' More powerful than LikeDim r As NewRegex("Jo[hH]. \d:*") If (r.Match("John 3:16").Success) Then 'true

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

' Mutable stringDim 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\n, \r \t \\ \"

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

// Charscharletter = school[0]; // letter is Hletter = Convert.ToChar(65); // letter is Aletter =(char)65; // same thingchar[]word = school.ToCharArray(); // word holds Harding

// String literalstring msg =@"File is c:\temp\x.dat";// same asstring msg = "File is c:\\temp\\x.dat";

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

Console.WriteLine(mascot.Substring(2, 3)); // Prints "son"

// String matching // No Like equivalent - use regular expressions

using System.Text.RegularExpressions;Regexr = newRegex(@"Jo[hH]. \d:*"); if (r.Match("John 3:16").Success) // true

// My birthday: Oct 12, 1973DateTime dt = new DateTime(1973, 10, 12); string s = "My birthday: " + dt.ToString("MMM dd, yyyy");

// Mutable stringSystem.Text.StringBuilderbuffer = 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

Exception Handling

C#

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

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

' Deprecated unstructured error handlingOnErrorGoToMyErrorHandler ... MyErrorHandler: Console.WriteLine(Err.Description)

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

// Catch an exceptiontry{ y = 0; x = 10 / y; }catch(Exception ex) { // Argument is optional, no "When" keyword Console.WriteLine(ex.Message); }finally{ // Requires reference to the Microsoft.VisualBasic.dll // assembly (pre .NET Framework v2.0) Microsoft.VisualBasic.Interaction.Beep(); }

VB.NET

Namespaces

C#

NamespaceHarding.Compsci.Graphics ...End Namespace

' or

NamespaceHarding NamespaceCompsci NamespaceGraphics ... End Namespace End Namespace End Namespace

ImportsHarding.Compsci.Graphics

namespaceHarding.Compsci.Graphics { ... }

// or

namespaceHarding { namespaceCompsci { namespaceGraphics { ... } } }

usingHarding.Compsci.Graphics;

VB.NET

Classes / Interfaces

C#

accessibility keywordsPublic Private Friend Protected Protected Friend Shared

' InheritanceClass FootballGame Inherits Competition ...End Class

' Interface definitionInterfaceIAlarmClock ...End Interface

// Extending an interface InterfaceIAlarmClock InheritsIClock ...End Interface

// Interface implementationClassWristWatch ImplementsIAlarmClock, ITimer ...End Class

Accessibility keywordspublic private internal protected protected internal static

// Inheritanceclass FootballGame:Competition { ... }

// Interface definitioninterfaceIAlarmClock { ... }

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

// Interface implementationclassWristWatch:IAlarmClock, ITimer { ... }

VB.NET

Constructors / Destructors

C#

ClassSuperHero Private _powerLevel As Integer

Public SubNew() _powerLevel = 0 End Sub

Public SubNew(ByVal powerLevel As Integer) Me._powerLevel = powerLevel End Sub

Protected Overrides SubFinalize() ' Desctructor code to free unmanaged resources MyBase.Finalize() End SubEnd Class

classSuperHero { 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 } }

VB.NET

Objects

C#

Dim hero As SuperHero = New SuperHero' orDim hero As New SuperHeroWithhero .Name = "SpamMan" .PowerLevel = 3End With

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

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

hero =Nothing ' Free the object

If heroIsNothingThen _ hero = New SuperHero

Dim obj As Object = New SuperHero IfTypeOfobjIsSuperHero 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 reference the same objecthero2.Name = "WormWoman"; Console.WriteLine(hero.Name); // Prints WormWoman

hero =null; // Free the object

if (hero ==null) hero = new SuperHero();

Object obj = new SuperHero(); if (objisSuperHero) Console.WriteLine("Is a SuperHero object.");

VB.NET

Structs

C#

StructureStudentRecord 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 SubEnd Structure

Dim stu As StudentRecord = New StudentRecord("Bob", 3.5) Dim stu2 As StudentRecord = stu

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

structStudentRecord { 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

VB.NET

Properties

C#

Private _size As Integer

PublicPropertySize() As Integer Get Return _size End Get Set(ByVal Value As Integer) If Value < 0 Then _size = 0 Else _size = Value End If End SetEnd Property

foo.Size += 1

private int _size;

public int Size { get{ return _size; } set{ if (value < 0) _size = 0; else _size = value; } } foo.Size++;

VB.NET

Delegates / Events

C#

DelegateSub MsgArrivedEventHandler(ByVal message As String)

EventMsgArrivedEvent As MsgArrivedEventHandler

' or to define an event which declares a delegate implicitlyEventMsgArrivedEvent(ByVal message As String)

AddHandlerMsgArrivedEvent,AddressOfMy_MsgArrivedCallback' Won't throw an exception if obj is NothingRaiseEventMsgArrivedEvent("Test message")RemoveHandlerMsgArrivedEvent,AddressOfMy_MsgArrivedCallback

Imports System.Windows.Forms

DimWithEventsMyButton 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)HandlesMyButton.Click MessageBox.Show(Me, "Button was clicked", "Info", _ MessageBoxButtons.OK, MessageBoxIcon.Information) End Sub

delegatevoid MsgArrivedEventHandler(string message);

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

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

Dim c As Integer c = Console.Read() ' Read single charConsole.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);// orConsole.WriteLine(name + " is " + age + " years old.");

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

VB.NET

File I/O

C#

Imports System.IO

' Write out to text fileDim writer AsStreamWriter= File.CreateText("c:\myfile.txt") writer.WriteLine("Out to file.") writer.Close()

' Read all lines from text fileDim reader AsStreamReader= 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 fileDim str As String = "Text data" Dim num As Integer = 123 Dim binWriter As NewBinaryWriter(File.OpenWrite("c:\myfile.dat")) binWriter.Write(str) binWriter.Write(num) binWriter.Close()

' Read from binary fileDim binReader As NewBinaryReader(File.OpenRead("c:\myfile.dat")) str = binReader.ReadString() num = binReader.ReadInt32() binReader.Close()

using System.IO;

// Write out to text fileStreamWriterwriter = File.CreateText("c:\\myfile.txt"); writer.WriteLine("Out to file."); writer.Close();

// Read all lines from text fileStreamReaderreader = File.OpenText("c:\\myfile.txt"); string line = reader.ReadLine(); while (line != null) { Console.WriteLine(line); line = reader.ReadLine(); } reader.Close();

// Write out to binary filestring str = "Text data"; int num = 123;BinaryWriterbinWriter = new BinaryWriter(File.OpenWrite("c:\\myfile.dat")); binWriter.Write(str); binWriter.Write(num); binWriter.Close();

// Read from binary fileBinaryReaderbinReader = new BinaryReader(File.OpenRead("c:\\myfile.dat")); str = binReader.ReadString(); num = binReader.ReadInt32(); binReader.Close();

 
 
 
免责声明:本文为网络用户发布,其观点仅代表作者个人观点,与本站无关,本站仅提供信息存储服务。文中陈述内容未经本站证实,其真实性、完整性、及时性本站不作任何保证或承诺,请读者仅作参考,并请自行核实相关内容。
2023年上半年GDP全球前十五强
 百态   2023-10-24
美众议院议长启动对拜登的弹劾调查
 百态   2023-09-13
上海、济南、武汉等多地出现不明坠落物
 探索   2023-09-06
印度或要将国名改为“巴拉特”
 百态   2023-09-06
男子为女友送行,买票不登机被捕
 百态   2023-08-20
手机地震预警功能怎么开?
 干货   2023-08-06
女子4年卖2套房花700多万做美容:不但没变美脸,面部还出现变形
 百态   2023-08-04
住户一楼被水淹 还冲来8头猪
 百态   2023-07-31
女子体内爬出大量瓜子状活虫
 百态   2023-07-25
地球连续35年收到神秘规律性信号,网友:不要回答!
 探索   2023-07-21
全球镓价格本周大涨27%
 探索   2023-07-09
钱都流向了那些不缺钱的人,苦都留给了能吃苦的人
 探索   2023-07-02
倩女手游刀客魅者强控制(强混乱强眩晕强睡眠)和对应控制抗性的关系
 百态   2020-08-20
美国5月9日最新疫情:美国确诊人数突破131万
 百态   2020-05-09
荷兰政府宣布将集体辞职
 干货   2020-04-30
倩女幽魂手游师徒任务情义春秋猜成语答案逍遥观:鹏程万里
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案神机营:射石饮羽
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案昆仑山:拔刀相助
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案天工阁:鬼斧神工
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案丝路古道:单枪匹马
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:与虎谋皮
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:李代桃僵
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:指鹿为马
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案金陵:小鸟依人
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案金陵:千金买邻
 干货   2019-11-12
 
推荐阅读
 
 
 
>>返回首頁<<
 
靜靜地坐在廢墟上,四周的荒凉一望無際,忽然覺得,淒涼也很美
© 2005- 王朝網路 版權所有