-
vb.net vs C#
This is a quick reference guide to highlight some key syntactical differences between VB.NET (version 2) and C#. Hope you find this useful!
Thank you to Tom Shelton, Fergus Cooney, Steven Swafford and others for your contributions.
Also see Java and C# Comparison.
Program Structure Comments Data Types Constants Enumerations |
Operators Choices Loops Arrays Functions |
Strings Exception Handling Namespaces Classes / Interfaces Constructors / Destructors |
Using Objects Structs Properties Delegates / Events Console I/O File I/O |
|
|||||||||||
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 + "!"); } } } |
||||||||||
|
|||||||||||
' Single line only Rem Single line only |
// Single line |
||||||||||
|
|||||||||||
Value Types
Reference Types
Dim x As Integer
' Type conversion |
Value Types
Reference Types
int x;
|
||||||||||
|
|||||||||||
Const MAX_STUDENTS As Integer = 25
' Can set to a const or var; may be initialized in a constructor |
const int MAX_STUDENTS = 25;
// Can set to a const or var; may be initialized in a constructor |
||||||||||
|
|||||||||||
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 |
||||||||||
|
|||||||||||
Comparison
Arithmetic
Assignment
Bitwise
Logical Note: AndAlso and OrElse perform short-circuit logical evaluations
String Concatenation |
Comparison
Arithmetic
Assignment
Bitwise
Logical Note: && and || perform short-circuit logical evaluations
String Concatenation |
||||||||||
|
|||||||||||
greeting = IIf(age < 20, "What's up?", "Hello")
' One line doesn't require "End If"
' Use : to put two commands on same line
' Preferred
' To break up any long single line use _
'If x > 5 Then
Select Case color ' Must be a primitive data type |
greeting = age < 20 ? "What's up?" : "Hello";
if (age < 20)
// Multiple statements must be enclosed in {} No need for _ or : since ; is used to terminate each statement.
|
||||||||||
|
|||||||||||
' Array or collection looping
' Breaking out of loops
' Continue to next iteration |
Pre-test Loops:
// no "until" keyword
// Breaking out of loops
// Continue to next iteration |
||||||||||
|
|||||||||||
Dim nums() As Integer = {1, 2, 3}
|
int[] nums = {1, 2, 3};
float[,] twoD = new float[rows, cols];
int[][] jagged = new int[3][] { |
||||||||||
|
|||||||||||
' Pass by value (in, default), reference (in/out), and reference (out)
Dim a = 1, b = 1, c As Integer ' c set to zero by default
' Accept variable number of arguments
' Optional parameters must be listed last and must have a default value |
// 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
// Accept variable number of arguments 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. */ |
||||||||||
|
|||||||||||
Special character constants
' String concatenation (use & or +)
' Chars
' No string literal operator
' String comparison Console.WriteLine(mascot.Substring(2, 3)) ' Prints "son"
' String matching
' My birthday: Oct 12, 1973
' Mutable string |
Escape sequences
// String concatenation
// Chars
// String literal
// String comparison Console.WriteLine(mascot.Substring(2, 3)); // Prints "son"
// String matching
// My birthday: Oct 12, 1973
// Mutable string |
||||||||||
|
|||||||||||
' Throw an exception
' Catch an exception
' Deprecated unstructured error handling |
// Throw an exception
// Catch an exception |
||||||||||
|
|||||||||||
Namespace Harding.Compsci.Graphics ' or
Namespace Harding Imports Harding.Compsci.Graphics |
namespace Harding.Compsci.Graphics { // or
namespace Harding { using Harding.Compsci.Graphics; |
||||||||||
|
|||||||||||
Accessibility keywords
' Inheritance
' Interface definition
// Extending an interface
// Interface implementation |
Accessibility keywords
// Inheritance
// Extending an interface
|
||||||||||
|
|||||||||||
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 Sub End Class |
class SuperHero { |
||||||||||
|
|||||||||||
Dim hero As SuperHero = New SuperHero
With hero
hero.Defend("Laura Jones")
Dim hero2 As SuperHero = hero ' Both reference the same object hero = Nothing ' Free the object
If hero Is Nothing Then _
Dim obj As Object = New SuperHero
' Mark object for quick disposal |
SuperHero hero = new SuperHero();
// No "With" construct
hero.Defend("Laura Jones");
hero = null ; // Free the object
if (hero == null)
Object obj = new SuperHero(); using (StreamReader reader = File.OpenText("test.txt")) { string line; while ((line = reader.ReadLine()) != null) Console.WriteLine(line); } |
||||||||||
|
|||||||||||
Structure StudentRecord
Dim stu As StudentRecord = New StudentRecord("Bob", 3.5) |
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); |
||||||||||
|
|||||||||||
Private _size As Integer foo.Size += 1 |
private int _size; public int Size { get { return _size; } set { if (value < 0) _size = 0; else _size = value; } }
|
||||||||||
|
|||||||||||
Delegate Sub MsgArrivedEventHandler(ByVal message As String) Event MsgArrivedEvent As MsgArrivedEventHandler
' or to define an event which declares a delegate implicitly
AddHandler MsgArrivedEvent, AddressOf My_MsgArrivedCallback Imports System.Windows.Forms
Dim WithEvents MyButton As Button ' WithEvents can't be used on local variable
Private Sub MyButton_Click(ByVal sender As System.Object, _ |
delegate void MsgArrivedEventHandler(string message); event MsgArrivedEventHandler MsgArrivedEvent;
// Delegates must be used with events in C#
Button MyButton = new Button();
private void MyButton_Click(object sender, System.EventArgs e) { |
||||||||||
|
|||||||||||
Console.Write("What's your name? ") |
Console.Write("What's your name? ");
|
||||||||||
|
|||||||||||
Imports System.IO
' Write out to text file
' Read all lines from text file
' Write out to binary file
' Read from binary file |
using System.IO;
// Write out to text file
// Read all lines from text file
// Write out to binary file
// Read from binary file |
原文链接:https://www.cnblogs.com/xucanzhao/archive/2006/11/01/547360.html