分享
 
 
 

从 PHP 迁移到 ASP.NET(2)

王朝php·作者佚名  2006-11-24
窄屏简体版  字體: |||超大  

语法和常见任务对比

以下各部分比较了 PHP 和 .NET 的语法,并介绍了如何完成某些非常常见的编程任务。

注释

PHP 允许您使用 C、C++ 和 Unix shell 样式语法在代码中插入注释,注释指示器中的任何内容都不会被执行。

一般来讲,要在 ASP.NET 中注释出 Visual Basic .Net 代码,需要使用 <%-- 打开注释块,并使用 --%> 关闭注释块。

表 2 显示了这两种环境中的注释。

表 2:服务器端注释

PHP ASP.NET

/*

这是被注释出的

文本块

*/

<%--

这是注释

--%>

变量

虽然 PHP 和 Visual Basic .NET 具有类似的语言构造,但语法却截然不同。由于 Visual Basic .NET 是基于 OOP 模型构建的,因而变量的声明要比 PHP 中变量的声明更严谨(在 PHP 中声明变量时只需在变量名之前添加一个 $ 符号)。

在 Visual Basic .NET 中声明变量时,要指定它的变量名和特性。变量的声明语句是 Dim 关键字。它的位置和内容决定了变量的特性。变量具有级别(例如局部变量和模块变量)、数据类型、生存期以及可访问性。

虽然这种方法最初看上去要比在 PHP 中指定变量复杂,但实际上它会给开发人员带来方便。ASP.NET 致力于帮助开发人员创建可靠的应用程序,而指定数据类型可以使诸如变量清理、调试、异常和错误处理以及代码维护等任务变得更加简单。

表 3 显示了在两种环境中声明变量的示例。

表 3:变量声明

PHP Visual Basic .NET

$head_count

$foo

$X

$obj

Dim head_count AS Integer

Dim foo As String

Dim X as Date

Dim Obj as object

声明数据类型

声明语句中的 AS 子句用于定义所声明变量的数据类型或对象类型。您可以为变量指定以下任意类型:

基本数据类型,例如 Boolean、Long 或 Decimal

复合数据类型,例如数组或结构

Visual Basic 或其他应用程序中的对象类型或类,例如 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 都支持若干不同的常见循环类型。

 

[1] [2] 下一页

 
 
 
免责声明:本文为网络用户发布,其观点仅代表作者个人观点,与本站无关,本站仅提供信息存储服务。文中陈述内容未经本站证实,其真实性、完整性、及时性本站不作任何保证或承诺,请读者仅作参考,并请自行核实相关内容。
2023年上半年GDP全球前十五强
 百态   2023-10-24
美众议院议长启动对拜登的弹劾调查
 百态   2023-09-13
上海、济南、武汉等多地出现不明坠落物
 探索   2023-09-06
印度或要将国名改为“巴拉特”
 百态   2023-09-06
男子为女友送行,买票不登机被捕
 百态   2023-08-20
手机地震预警功能怎么开?
 干货   2023-08-06
女子4年卖2套房花700多万做美容:不但没变美脸,面部还出现变形
 百态   2023-08-04
住户一楼被水淹 还冲来8头猪
 百态   2023-07-31
女子体内爬出大量瓜子状活虫
 百态   2023-07-25
地球连续35年收到神秘规律性信号,网友:不要回答!
 探索   2023-07-21
全球镓价格本周大涨27%
 探索   2023-07-09
钱都流向了那些不缺钱的人,苦都留给了能吃苦的人
 探索   2023-07-02
倩女手游刀客魅者强控制(强混乱强眩晕强睡眠)和对应控制抗性的关系
 百态   2020-08-20
美国5月9日最新疫情:美国确诊人数突破131万
 百态   2020-05-09
荷兰政府宣布将集体辞职
 干货   2020-04-30
倩女幽魂手游师徒任务情义春秋猜成语答案逍遥观:鹏程万里
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案神机营:射石饮羽
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案昆仑山:拔刀相助
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案天工阁:鬼斧神工
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案丝路古道:单枪匹马
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:与虎谋皮
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:李代桃僵
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:指鹿为马
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案金陵:小鸟依人
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案金陵:千金买邻
 干货   2019-11-12
 
推荐阅读
 
 
 
>>返回首頁<<
 
靜靜地坐在廢墟上,四周的荒凉一望無際,忽然覺得,淒涼也很美
© 2005- 王朝網路 版權所有