语言支持

Microsoft .NET Platform 目前提供对以下三种语言的内置支持:C#、Visual Basic 和 JScript。

本教程中的练习和代码示例展示如何使用 C#、Visual Basic 和 JScript 生成 .NET 应用程序。有关其他语言语法的信息,请参考 .NET 框架 SDK 的完整文档。

提供下表以帮助您理解本教程中的代码示例以及三种语言之间的差异:

变量声明

int x;
            String s;
            String s1, s2;
            Object o;
            Object obj = new Object();
            public String name;
            
Dim x As Integer
            Dim s As String
            Dim s1, s2 As String
            Dim o 'Implicitly Object
            Dim obj As New Object()
            Public name As String
            
var x : int;
            var s : String;
            var s1 : String, s2 : String;
            var o;
            var obj : Object = new Object();
            var name : String;
            
C# VB JScript  

语句

            
            
            
C# VB JScript  

注释

// This is a comment
            /*
            This
            is
            a
            multiline
            comment
            */
            
' This is a comment
            ' This
            ' is
            ' a
            ' multiline
            ' comment
            
// This is a comment
            /*
            This
            is
            a
            multiline
            comment
            */
            
C# VB JScript  

访问索引属性

            
Dim s, value As String
            s = Request.QueryString("Name")
            value = Request.Cookies("Key").Value
            'Note that default non-indexed properties
            'must be explicitly named in VB
            
            
C# VB JScript  

声明索引属性

// Default Indexed Property
            public String this[String name] {
            get {
            return (String) lookuptable[name];
            }
            }
            
' Default Indexed Property
            Public Default ReadOnly Property DefaultProperty(Name As String) As String
            Get
            Return CStr(lookuptable(name))
            End Get
            End Property
            
JScript does not support the creation of indexed or default indexed properties.
            To emulate these properties in JScript, use function
            declarations instead.  Even though you cannot access the functions using indexed property syntax in C#, it will provide the illusion for VB.
            public function Item(name:String) : String {
            return String(lookuptable(name));
            }
            
C# VB JScript  

声明简单属性

public String name {
            get {
            ...
            return ...;
            }
            set {
            ... = value;
            }
            }
            
Public Property Name As String
            Get
            ...
            Return ...
            End Get
            Set
            ... = Value
            End Set
            End Property
            
function get name() : String {
            ...
            return ...;
            }
            function set name(value : String) {
            ... = value;
            }
            
C# VB JScript  

声明和使用枚举

// Declare the Enumeration
            public enum MessageSize {
            Small = 0,
            Medium = 1,
            Large = 2
            }
            // Create a Field or Property
            public MessageSize msgsize;
            // Assign to the property using the Enumeration values
            msgsize = Small;
            
' Declare the Enumeration
            Public Enum MessageSize
            Small = 0
            Medium = 1
            Large = 2
            End Enum
            ' Create a Field or Property
            Public MsgSize As MessageSize
            ' Assign to the property using the Enumeration values
            MsgSize = small
            
// Declare the Enumeration
            public enum MessageSize {
            Small = 0,
            Medium = 1,
            Large = 2
            }
            // Create a Field or Property
            public var msgsize:MessageSize;
            // Assign to the property using the Enumeration values
            msgsize = Small;
            
C# VB JScript  

枚举集合

foreach ( String s in coll ) {
            ...
            }
            
Dim S As String
            For Each S In Coll
            ...
            Next
            
var s:String;
            for ( s in coll ) {
            ...
            }
            
C# VB JScript  

声明和使用方法

// Declare a void return function
            void voidfunction() {
            ...
            }
            // Declare a function that returns a value
            String stringfunction() {
            ...
            return (String) val;
            }
            // Declare a function that takes and returns values
            String parmfunction(String a, String b) {
            ...
            return (String) (a + b);
            }
            // Use the Functions
            voidfunction();
            String s1 = stringfunction();
            String s2 = parmfunction("Hello", "World!");
            
' Declare a void return function
            Sub VoidFunction()
            ...
            End Sub
            ' Declare a function that returns a value
            Function StringFunction() As String
            ...
            Return CStr(val)
            End Function
            ' Declare a function that takes and returns values
            Function ParmFunction(a As String, b As String) As String
            ...
            Return CStr(A & B)
            End Function
            ' Use the Functions
            VoidFunction()
            Dim s1 As String = StringFunction()
            Dim s2 As String = ParmFunction("Hello", "World!")
            
// Declare a void return function
            function voidfunction() : void {
            ...
            }
            // Declare a function that returns a value
            function stringfunction() : String {
            ...
            return String(val);
            }
            // Declare a function that takes and returns values
            function parmfunction(a:String, b:String) : String {
            ...
            return String(a + b);
            }
            // Use the Functions
            voidfunction();
            var s1:String = stringfunction();
            var s2:String = parmfunction("Hello", "World!");
            
C# VB JScript  

自定义属性

// Stand-alone attribute
            [STAThread]
            // Attribute with parameters
            [DllImport("ADVAPI32.DLL")]
            // Attribute with named parameters
            [DllImport("KERNEL32.DLL", CharSet=CharSet.Auto)]
            
' Stand-alone attribute
            <STAThread>
            ' Attribute with parameters
            <DllImport("ADVAPI32.DLL")>
            ' Attribute with named parameters
            <DllImport("KERNEL32.DLL", CharSet:=CharSet.Auto)>
            
// Stand-alone attribute
            STAThreadAttribute
            // Attribute with parameters
            DllImportAttribute("ADVAPI32.DLL")
            // Attribute with named parameters
            DllImportAttribute("KERNEL32.DLL", CharSet=CharSet.Auto)
            
C# VB JScript  

数组

    String[] a = new String[3];
            a[0] = "1";
            a[1] = "2";
            a[2] = "3";
            String[][] a = new String[3][3];
            a[0][0] = "1";
            a[1][0] = "2";
            a[2][0] = "3";
            
    Dim a(2) As String
            a(0) = "1"
            a(1) = "2"
            a(2) = "3"
            Dim a(2,2) As String
            a(0,0) = "1"
            a(1,0) = "2"
            a(2,0) = "3"
            
    var a : String[] = new String[3];
            a[0] = "1";
            a[1] = "2";
            a[2] = "3";
            var a : String[][] = new String[3][3];
            a[0][0] = "1";
            a[1][0] = "2";
            a[2][0] = "3";
            
C# VB JScript  

初始化

            
            
            
C# VB JScript  

If 语句

if (Request.QueryString != null) {
            ...
            }
            
If Not (Request.QueryString = Nothing)
            ...
            End If
            
if (Request.QueryString != null) {
            ...
            }
            
C# VB JScript  

Case 语句

switch (FirstName) {
            case "John" :
            ...
            break;
            case "Paul" :
            ...
            break;
            case "Ringo" :
            ...
            break;
            default:
            ...
            break;
            }
            
Select Case FirstName
            Case "John"
            ...
            Case "Paul"
            ...
            Case "Ringo"
            ...
            Case Else
            ...
            End Select
            
switch (FirstName) {
            case "John" :
            ...
            break;
            case "Paul" :
            ...
            break;
            case "Ringo" :
            ...
            break;
            default:
            ...
            break;
            }
            
C# VB JScript  

For 循环

for (int i=0; i<3; i++)
            a(i) = "test";
            
  Dim I As Integer
            For I = 0 To 2
            a(I) = "test"
            Next
            
for (var i : int = 0; i < 3; i++)
            a[i] = "test";
            
C# VB JScript  

While 循环

int i = 0;
            while (i<3) {
            Console.WriteLine(i.ToString());
            i += 1;
            }
            
Dim I As Integer
            I = 0
            Do While I < 3
            Console.WriteLine(I.ToString())
            I += 1
            Loop
            
var i : int = 0;
            while (i < 3) {
            Console.WriteLine(i);
            i += 1;
            }
            
C# VB JScript  

异常处理

try {
            // Code that throws exceptions
            } catch(OverflowException e) {
            // Catch a specific exception
            } catch(Exception e) {
            // Catch the generic exceptions
            } finally {
            // Execute some cleanup code
            }
            
Try
            ' Code that throws exceptions
            Catch E As OverflowException
            ' Catch a specific exception
            Catch E As Exception
            ' Catch the generic exceptions
            Finally
            ' Execute some cleanup code
            End Try
            
try {
            // Code that throws exceptions
            } catch(e:OverflowException) {
            // Catch a specific exception
            } catch(e:Exception) {
            // Catch the generic exceptions
            } finally {
            // Execute some cleanup code
            }
            
C# VB JScript  

字符串连接

// Using Strings
            String s1;
            String s2 = "hello";
            s2 += " world";
            s1 = s2 + " !!!";
            // Using StringBuilder class for performance
            StringBuilder s3 = new StringBuilder();
            s3.Append("hello");
            s3.Append(" world");
            s3.Append(" !!!");
            
' Using Strings
            Dim s1, s2 As String
            s2 = "hello"
            s2 &= " world"
            s1 = s2 & " !!!"
            ' Using StringBuilder class for performance
            Dim s3 As New StringBuilder()
            s3.Append("hello")
            s3.Append(" world")
            s3.Append(" !!!")
            
// Using Strings
            var s1 : String;
            var s2 : String = "hello";
            s2 += " world";
            s1 = s2 + " !!!";
            // Using StringBuilder class for performance
            var s3:StringBuilder = new StringBuilder();
            s3.Append("hello");
            s3.Append(" world");
            s3.Append(" !!!");
            
C# VB JScript  

事件处理程序委托

void MyButton_Click(Object sender,
            EventArgs E) {
            ...
            }
            
Sub MyButton_Click(Sender As Object,
            E As EventArgs)
            ...
            End Sub
            
function MyButton_Click(sender : Object,
            E : EventArgs) {
            ...
            }
            
C# VB JScript  

声明事件

// Create a public event
            public event EventHandler MyEvent;
            // Create a method for firing the event
            protected void OnMyEvent(EventArgs e) {
            MyEvent(this, e);
            }
            
' Create a public event
            Public Event MyEvent(Sender as Object, E as EventArgs)
            ' Create a method for firing the event
            Protected Sub OnMyEvent(E As EventArgs)
            RaiseEvent MyEvent(Me, E)
            End Sub
            
JScript does not support the creation of events.  JScript can only
            consume events by declaring event handler delegates and adding those
            delegates to the events of another control.
            
C# VB JScript  

向事件添加事件处理程序或从事件移除事件处理程序

Control.Change += new EventHandler(this.ChangeEventHandler);
            Control.Change -= new EventHandler(this.ChangeEventHandler);
            
AddHandler Control.Change, AddressOf Me.ChangeEventHandler
            RemoveHandler Control.Change, AddressOf Me.ChangeEventHandler
            
Control.Change += this.ChangeEventHandler;
            Control.Change -= this.ChangeEventHandler;
            
C# VB JScript  

强制类型转换

            
Dim obj As MyObject
            Dim iObj As IMyObject
            obj = Session("Some Value")
            iObj = CType(obj, IMyObject)
            
            
C# VB JScript  

转换

int i = 3;
            String s = i.ToString();
            double d = Double.Parse(s);
            
Dim i As Integer
            Dim s As String
            Dim d As Double
            i = 3
            s = i.ToString()
            d = CDbl(s)
            ' See also CDbl(...), CStr(...), ...
            
var i : int = 3;
            var s : String = i.ToString();
            var d : double = Number(s);
            
C# VB JScript  

带继承的类定义

using System;
            namespace MySpace {
            public class Foo : Bar {
            int x;
            public Foo() { x = 4; }
            public void Add(int x) { this.x += x; }
            override public int GetNum() { return x; }
            }
            }
            // csc /out:librarycs.dll /t:library
            // library.cs
            
Imports System
            Namespace MySpace
            Public Class Foo : Inherits Bar
            Dim x As Integer
            Public Sub New()
            MyBase.New()
            x = 4
            End Sub
            Public Sub Add(x As Integer)
            Me.x = Me.x + x
            End Sub
            Overrides Public Function GetNum() As Integer
            Return x
            End Function
            End Class
            End Namespace
            ' vbc /out:libraryvb.dll /t:library
            ' library.vb
            
import System;
            package MySpace {
            class Foo extends Bar {
            private var x : int;
            function Foo() { x = 4; }
            function Add(x : int) { this.x += x; }
            override function GetNum() : int { return x; }
            }
            }
            // jsc /out:libraryjs.dll library.js
            
C# VB JScript  

实现接口

public class MyClass : IEnumerable {
            ...
            IEnumerator IEnumerable.GetEnumerator() {
            ...
            }
            }
            
Public Class MyClass : Implements IEnumerable
            ...
            Function IEnumerable_GetEnumerator() As IEnumerator Implements IEnumerable.GetEnumerator
            ...
            End Function
            End Class
            
public class MyClass implements IEnumerable {
            ...
            function IEnumerable.GetEnumerator() : IEnumerator {
            ...
            }
            }
            
C# VB JScript  

带 Main 方法的类定义

using System;
            public class ConsoleCS {
            public ConsoleCS() {
            Console.WriteLine("Object Created");
            }
            public static void Main (String[] args) {
            Console.WriteLine("Hello World");
            ConsoleCS ccs = new ConsoleCS();
            }
            }
            // csc /out:consolecs.exe /t:exe console.cs
            
Imports System
            Public Class ConsoleVB
            Public Sub New()
            MyBase.New()
            Console.WriteLine("Object Created")
            End Sub
            Public Shared Sub Main()
            Console.WriteLine("Hello World")
            Dim cvb As New ConsoleVB
            End Sub
            End Class
            ' vbc /out:consolevb.exe /t:exe console.vb
            
class ConsoleCS {
            function ConsoleCS() {
            print("Object Created");
            }
            static function Main (args : String[]) {
            print("Hello World");
            var ccs : ConsoleCS = new ConsoleCS();
            }
            }
            // jsc /out:consolejs.exe /exe console.js
            
C# VB JScript  

标准模块

using System;
            public class Module {
            public static void Main (String[] args) {
            Console.WriteLine("Hello World");
            }
            }
            // csc /out:consolecs.exe /t:exe console.cs
            
Imports System
            Public Module ConsoleVB
            Public Sub Main()
            Console.WriteLine("Hello World")
            End Sub
            End Module
            ' vbc /out:consolevb.exe /t:exe console.vb
            
            
C# VB JScript  


相关文章:

  • 2021-08-14
  • 2021-08-26
  • 2021-05-02
  • 2022-12-23
猜你喜欢
  • 2022-12-23
  • 2022-12-23
  • 2022-12-23
  • 2021-10-01
  • 2021-11-19
  • 2021-12-24
  • 2021-05-29
相关资源
相似解决方案