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…..-讨饭猫）