- ·上一篇文章:Asp.net+Xml实现无数据库论坛一点即通
- ·下一篇文章:ASP.NET下MVC设计模式的实现
从 PHP 迁移到 ASP.NET
他应用程序中的对象类型或类,例如 Label 或 TextBox
您可以在一个语句中声明多个相同类型的变量而不必重复数据类型。下面的语句将变量 numStudents、numGTA 和 numProfessors 声明为 Integer 类型:
Dim numStudents, numGTA , numProfessors AS Integer ' 三个变量都是 Integer 类型。
有关数据类型的详细信息,请参阅 Data Types。有关面向对象编程的详细信息,请参阅 Object-Oriented Programming in Visual Basic。
声明生存期
变量的生存期是指变量可供使用的时间段。使用 Dim 语句声明的局部变量仅在其执行过程中存在。过程终止时,该过程的所有局部变量都将消失,这些变量的值也将丢失。
生存期这个概念很有用,因为它使开发人员在创建应用程序时不必考虑在大型应用程序中出现的许多问题,例如有效的内存管理。通过为变量选择正确的生存期,可以使 .NET 对未在使用的变量执行清理操作。
有关生存期的详细信息,请参阅 Lifetime。
声明范围
局部变量是在过程(过程与函数类似)中声明的变量。非局部变量是在过程之外但在类或结构中声明的变量。
在类或结构中,非局部变量的类别取决于该变量是否被共享。使用 Shared 关键字声明的变量是共享变量,它只有一个副本并且在类或结构的所有实例中共享。如果不使用 Shared 关键字,则该变量为实例变量,并且针对类或结构的每个实例都将创建一个单独的变量副本。实例变量的给定副本仅可用于为之创建该副本的实例。
变量的范围是指可以引用它而不必限定其名称的所有代码集。变量的范围取决于声明变量的位置。位于给定区域中的代码可以使用在该区域中定义的变量而不必限定其名称。声明范围时,将遵循以下规则:
共享变量或实例变量的范围是在其中声明了该变量的结构或类。
局部变量的范围是在其中声明了该变量的过程。
但是,如果您在块中声明一个局部变量,则它的范围将只限于该块。局部变量在定义它的控制块中处于活动状态。控制块可以是过程、if 语句以及循环语句等。
有关范围的详细信息,请参阅 Scope。
声明可访问性
.NET 支持变量的可访问性,从而使开发人员可以控制哪些代码能够访问特定的变量。例如,如果要为某个公式设置一些常数,并且要确保这些常数不会被它们所在类以外的其他代码更改,则可以使用 private 按如下所示声明该变量:
Private myConstant As Integer
变量的可访问性由声明语句中使用的一个或多个关键字 Dim、Public、Protected、Friend、Protected Friend 或 Private 确定。开发过程中通常只使用 public 和 private。
您可以使用上述任意关键字来声明模块、结构、类或实例变量。过程中只允许使用 Dim 关键字,并且可访问性始终为 private。
输出
PHP 中输出数据的典型方式是使用 echo() 语言构造。ASP.NET 中与此最相似的是 Response.Write() 方法(或 <%= %> 构造,它只是 Response.Write() 的简写形式)。表 4 显示了向页面写入值的基本语法。
表 4:基本输出
PHP Visual Basic .NET
<?php
$hello = "hi how are you\n";
echo $hello;
?
>
<%
Dim Hello As String = "Hi how are you" & vbcrlf
Response.Write(Hello)
%>
然而,这些用于向浏览器发送输出的方法主要是为了保持与传统 ASP 的向后兼容性。ASP.NET 提供了新的基于控件且面向事件的模型,您只需在服务器控件上设置属性即可将数据输出到浏览器中。通过这种技术可以将布局与代码清楚地分开,从而简化了维护工作,并且在复杂情况下所需的代码要比 PHP 少得多。
<script language="VB" runat="server">
Sub Page_Load(sender As Object, e As EventArgs)
TheDate.Text = DateTime.Now
End Sub
</script>
The current date is: <asp:Label id="TheDate" runat="server"/>
此示例声明了一个名为 TheDate 的服务器端标签 (Label) 控件,并在该页面的 Load 事件中将此标签的 Text 属性设置为当前的日期和时间。此代码的 HTML 输出与其他两个版本相同,不同的是 Label 控件将自身呈现为 span 标记(其中包含所设置的任何标签文本)。
条件处理
IF/ELSE
PHP 具有若干条件处理表达式,例如 for、while、switch 和 foreach,但最常用的是 if/else 表达式。Visual Basic .NET 有几个非常类似的构造,其语法也很类似。表 5 对 PHP 和 Visual Basic .NET 中的等价条件逻辑进行了比较。
表 5:基本条件逻辑
PHP Visual Basic .NET
if ($a > $b) {
print "a is bigger than b";
} elseif ($a == $b) {
print "a is equal to b";
} else {
print "a is smaller than b";
}
If a > b
Response.write ("a is bigger
than b")
ElseIf a = b Then
Response.write ("a is equal to
b")
Else
Response.write ("a is smaller
than b")
End If
切换
切换语句是大多数编程语言的常见语言构造,用于通过多个值对单个表达式进行测试。它常用于替换包含多个 elseif/else 块的 if 语句。
图 6 对 PHP 的 switch 语句与 Visual Basic 的 Select Case 语句进行了比较。
表 6:switch 与 select case 语句的对比
PHP Visual Basic .NET
switch ($i) {
case 0:
print "i equals 0";
break;
case 1:
print "i equals 1";
break;
case 2:
print "i equals 2";
break;
default:
print "i is not equal to 0,
1 or 2";
}
Select Case Number i
Case 0
description = "0"
response.write ("i equals 0")
Case 1
description = "1"
response.write ("i equals 1")
Case 2
description = "2"
response.write ("i equals 2")
Case Else
description = " i is not equal
to 0, 1 or 2"
response.write ("i is not
equal to 0, 1 or 2 ")
End Select
循环
另一个非常常见的控制构造是循环。PHP 和 .NET 都支持若干不同的常见循环类型。
表 7:For 循环
PHP Visual Basic .NET
for ($i = 1; $i <= 100; $i++) {
print $i;
}
Dim sum As Integer = 0
Dim counter As Integer
For counter = 1 To 100 Step 5
sum += counter
Next
For i = 1 to 100
Response.write (i)
Next I
在 Visual Basic 中,这种循环类型被称为 For...Next 循环,而在 PHP 中则称为 For 循环。在此示例中,我们使用了 += 运算符作为 sum = sum + counter 的简写方式。在 PHP 中,可以使用 Break; 语句来中断循环。而 For...Next 循环可以通过 Exit For 语句中断。
条件循环
只要某个条件计算为 true,条件循环便会持续重
您可以在一个语句中声明多个相同类型的变量而不必重复数据类型。下面的语句将变量 numStudents、numGTA 和 numProfessors 声明为 Integer 类型:
Dim numStudents, numGTA , numProfessors AS Integer ' 三个变量都是 Integer 类型。
有关数据类型的详细信息,请参阅 Data Types。有关面向对象编程的详细信息,请参阅 Object-Oriented Programming in Visual Basic。
声明生存期
变量的生存期是指变量可供使用的时间段。使用 Dim 语句声明的局部变量仅在其执行过程中存在。过程终止时,该过程的所有局部变量都将消失,这些变量的值也将丢失。
生存期这个概念很有用,因为它使开发人员在创建应用程序时不必考虑在大型应用程序中出现的许多问题,例如有效的内存管理。通过为变量选择正确的生存期,可以使 .NET 对未在使用的变量执行清理操作。
有关生存期的详细信息,请参阅 Lifetime。
声明范围
局部变量是在过程(过程与函数类似)中声明的变量。非局部变量是在过程之外但在类或结构中声明的变量。
在类或结构中,非局部变量的类别取决于该变量是否被共享。使用 Shared 关键字声明的变量是共享变量,它只有一个副本并且在类或结构的所有实例中共享。如果不使用 Shared 关键字,则该变量为实例变量,并且针对类或结构的每个实例都将创建一个单独的变量副本。实例变量的给定副本仅可用于为之创建该副本的实例。
变量的范围是指可以引用它而不必限定其名称的所有代码集。变量的范围取决于声明变量的位置。位于给定区域中的代码可以使用在该区域中定义的变量而不必限定其名称。声明范围时,将遵循以下规则:
共享变量或实例变量的范围是在其中声明了该变量的结构或类。
局部变量的范围是在其中声明了该变量的过程。
但是,如果您在块中声明一个局部变量,则它的范围将只限于该块。局部变量在定义它的控制块中处于活动状态。控制块可以是过程、if 语句以及循环语句等。
有关范围的详细信息,请参阅 Scope。
声明可访问性
.NET 支持变量的可访问性,从而使开发人员可以控制哪些代码能够访问特定的变量。例如,如果要为某个公式设置一些常数,并且要确保这些常数不会被它们所在类以外的其他代码更改,则可以使用 private 按如下所示声明该变量:
Private myConstant As Integer
变量的可访问性由声明语句中使用的一个或多个关键字 Dim、Public、Protected、Friend、Protected Friend 或 Private 确定。开发过程中通常只使用 public 和 private。
您可以使用上述任意关键字来声明模块、结构、类或实例变量。过程中只允许使用 Dim 关键字,并且可访问性始终为 private。
输出
PHP 中输出数据的典型方式是使用 echo() 语言构造。ASP.NET 中与此最相似的是 Response.Write() 方法(或 <%= %> 构造,它只是 Response.Write() 的简写形式)。表 4 显示了向页面写入值的基本语法。
表 4:基本输出
PHP Visual Basic .NET
<?php
$hello = "hi how are you\n";
echo $hello;
?
>
<%
Dim Hello As String = "Hi how are you" & vbcrlf
Response.Write(Hello)
%>
然而,这些用于向浏览器发送输出的方法主要是为了保持与传统 ASP 的向后兼容性。ASP.NET 提供了新的基于控件且面向事件的模型,您只需在服务器控件上设置属性即可将数据输出到浏览器中。通过这种技术可以将布局与代码清楚地分开,从而简化了维护工作,并且在复杂情况下所需的代码要比 PHP 少得多。
<script language="VB" runat="server">
Sub Page_Load(sender As Object, e As EventArgs)
TheDate.Text = DateTime.Now
End Sub
</script>
The current date is: <asp:Label id="TheDate" runat="server"/>
此示例声明了一个名为 TheDate 的服务器端标签 (Label) 控件,并在该页面的 Load 事件中将此标签的 Text 属性设置为当前的日期和时间。此代码的 HTML 输出与其他两个版本相同,不同的是 Label 控件将自身呈现为 span 标记(其中包含所设置的任何标签文本)。
条件处理
IF/ELSE
PHP 具有若干条件处理表达式,例如 for、while、switch 和 foreach,但最常用的是 if/else 表达式。Visual Basic .NET 有几个非常类似的构造,其语法也很类似。表 5 对 PHP 和 Visual Basic .NET 中的等价条件逻辑进行了比较。
表 5:基本条件逻辑
PHP Visual Basic .NET
if ($a > $b) {
print "a is bigger than b";
} elseif ($a == $b) {
print "a is equal to b";
} else {
print "a is smaller than b";
}
If a > b
Response.write ("a is bigger
than b")
ElseIf a = b Then
Response.write ("a is equal to
b")
Else
Response.write ("a is smaller
than b")
End If
切换
切换语句是大多数编程语言的常见语言构造,用于通过多个值对单个表达式进行测试。它常用于替换包含多个 elseif/else 块的 if 语句。
图 6 对 PHP 的 switch 语句与 Visual Basic 的 Select Case 语句进行了比较。
表 6:switch 与 select case 语句的对比
PHP Visual Basic .NET
switch ($i) {
case 0:
print "i equals 0";
break;
case 1:
print "i equals 1";
break;
case 2:
print "i equals 2";
break;
default:
print "i is not equal to 0,
1 or 2";
}
Select Case Number i
Case 0
description = "0"
response.write ("i equals 0")
Case 1
description = "1"
response.write ("i equals 1")
Case 2
description = "2"
response.write ("i equals 2")
Case Else
description = " i is not equal
to 0, 1 or 2"
response.write ("i is not
equal to 0, 1 or 2 ")
End Select
循环
另一个非常常见的控制构造是循环。PHP 和 .NET 都支持若干不同的常见循环类型。
表 7:For 循环
PHP Visual Basic .NET
for ($i = 1; $i <= 100; $i++) {
print $i;
}
Dim sum As Integer = 0
Dim counter As Integer
For counter = 1 To 100 Step 5
sum += counter
Next
For i = 1 to 100
Response.write (i)
Next I
在 Visual Basic 中,这种循环类型被称为 For...Next 循环,而在 PHP 中则称为 For 循环。在此示例中,我们使用了 += 运算符作为 sum = sum + counter 的简写方式。在 PHP 中,可以使用 Break; 语句来中断循环。而 For...Next 循环可以通过 Exit For 语句中断。
条件循环
只要某个条件计算为 true,条件循环便会持续重
