ASP+ 支持的 C# 和 VB 语法对照表

---摘自《ChinaAsp网络》(文/讨饭猫)
ASP+内置支持3种语言：C#，Visual Basic（注意不是VBScript），JScript。下面列出一个简单的C#和VB语法对照表，看看你到底喜欢那个？

C# 语法 | VB 语法
定义变量

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

输出内容
Response.Write("foo"); | Response.Write("foo")
注释

// This is a comment
/* This is a multi-line comment */

' This is a comment
' This
' is
' a
' multi-line
' comment

读取数据集合数组
String s = Request.QueryString["Name"]; String value = Request.Cookies["key"]; | 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
定义简单数据集

public String name {
get {
...
return ...;
}
set {
... = value;
}
}

Public Property Name As String
Get
...
Return
...;
End Get
Set
... = Value;
End Set
End Property

数组

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(3) As String
a(0) = "1"
a(1) = "2"
a(2) = "3"
Dim a(3,3) As String
a(0,0) = "1"
a(1,0) = "2"
a(2,0) = "3"
' Array of unspecified bounds (NA in C#)
Dim a() As String
a(0,0) = "1"
a(1,0) = "2"
a(2,0) = "3"
Dim a(,) As String
a(0,0) = "1"
a(1,0) = "2"
a(2,0) = "3"

初始化变量
String s = "Hello World"; int i = 1 double[] a = { 3.00, 4.00, 5.00 }; | Dim s As String = "Hello World" Dim i As Integer = 1 Dim a() As Double = { 3.00, 4.00, 5.00 }
If 结构
if (Request.QueryString != null) { ... } | If Not (Request.QueryString = Null) ... End If
Case 结构

switch (FirstName){
case "John" :
...
break;
case "Paul" :
...
break;
case "Ringo" :
...
break;
}

Select (FirstName)
case "John" :
...
case "Paul" :
...
case "Ringo" :
...
End Select

For 循环
for (int i=0; i<3; i++) a(i) = "test"; | Dim I As Integer For I = 0 To 2 a(I) = "test" Next
While 循环
int i = 0; while (i<3) { Console.WriteLine(i.ToString()); i += 1; } | Dim I As Integer I = 0 Do While I
字符串操作
String s1; String s2 = "hello"; s2 += " world"; s1 = s2 + " !!!"; | Dim s1, s2 As String s2 = "hello" s2 &= " world" s1 = s2 & " !!!"
事件处理
void MyButton_Click(Object sender, EventArgs E) { ... } | Sub MyButton_Click(Sender As Object, E As EventArgs) ... End Sub 注意 ByVal 在VB中是省缺参数
对象操作
MyObject obj = (MyObject)Session["Some Value"]; IMyObject iObj = obj | Dim bj As MyObject Dim iObj As IMyObject obj = Session("Some Value") iObj = CType(obj, IMyObject)
类型转换

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)
' 参见 CDbl(...), CStr(...), ...

类定义和继承

using System;
namespace MySpace {
public class Foo : Bar {
int x;
public Foo() {x = 4; }
public void Add(int x) { this.x += x; }
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
Public Function GetNum() As Integer
Return x
End Function
End Class
End Namespace
' vbc /out:libraryvb.dll /t:library library.vb

（也许是多年来用惯了C的缘故，一直喜欢C那种简练，个性化的风格，文字和符号混合使用，可以让眼睛迅速找到关键所在，避免视线被淹没在复杂的字符串中，所以即使在 ASP 时代，也是坚持使用风格类似的 JScript，现在终于……hehehe…..-讨饭猫）