|
马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。
您需要 登录 才可以下载或查看,没有帐号?立即注册
x
asp,jsp,php是web开发的三大技术,asp简单易用且有microsoft做靠山,jsp功能强大是因为有java支持,php则开源跨平台.在国内,asp应用范围最广,jsp发展势头最猛,php则处于劣势.这可能与公司的支持以及技术的培训有关.vbscript|visual
新的易O定(assignment)Z法
Visual Basic.NET 供应新的易O定Z法,程式a撰以下r
MyVal = 10
MyVal += 10
@r MyVal 的值 20 ,程式a等於
MyVal = MyVal + 10
^承(Inheritance)
Visual Basic.NET F今是一完全的物件(Object Orient)Z言,也就是完全增援封b、^承、多型等等程式撰的体例,K供应建/解子。所以它增添了以往 Visual Basic 在@一方面所缺少的功效,如^承。
Visual Basic.NET 增添的^承你可以其他的 Class 榛A斫⑿碌 Class,衍生的(Derived) Class 可以^承(inherit)和延长原始 Class 的傩院头椒ākm然衍生的 Class 只能^承自我坏幕A(base) Class,但它可以做(implement)o限的康慕槊(interface)。衍生的 Class 也能够撰新的办法 override ^承下淼姆椒ǎ Visual Basic.NET 创立的 Class AO都是可以被^承的。
^承和介面你可以做多型(polymorphism),分歧的 class 可以从头定x不异名Q的傩院头椒ā6嘈褪俏锛(object-orient)程式O的基A,因樗你可以呼唤不异名Q的办法,而不论在利用的下是哪一N型B的物件。例如o一 NormalPayroll 的基A class,多型程式O可以定x多衍生 Class 分歧的 PayEmployee 办法。其他的傩院头椒梢韵嗤姆绞绞褂醚苌锛 PayEmployee 办法,而不论是用到哪一衍生的物件。
Visual Basic.NET 供应以下的Z句矶x和增援^承
- Inherits Z句 -- 定x下 Class 要^承的 Class(也Q榛A class)。凡是可以透^傩砸窗(properties window)碓O定。
- NotInheritable 定x子 -- 避免利用者⒃ Class 作基A class 硎褂
- MustInherit 定x子 -- 定x class 不克不及用斫 instance,独一利用它的体例是^承它。
衍生的 class 可以新的做体例 override 一些^承淼姆椒āVisual Basic.NET 利用以下的定x子砜刂品椒ê傩缘 overriding
- Overridable -- 傩院头椒ㄔ诶^承的 Class 可以 override
- Overrides -- 定x要 override 哪一基A的傩曰蚍椒
- NotOverridable(AO) -- 避免傩曰蚍椒ū焕^承的 class override
- MustOverride -- 请求^承的 class 必定要 override 傩曰蚍椒
程式a例以下 Imports System
Namespace MyNamespace Class Payroll
Overridable Function PayEmployee(ByVal HoursWorked As Single, ByVal PayRate As Single)
PayEmployee = HoursWorked * PayRate
End Function
End Class Class BonusPayroll
Inherits Payroll
Overrides Function PayEmployee(ByVal HoursWorked As Single, ByVal PayRate As Single)
PayEmployee = (HoursWorked * PayRate) * 1.45 ' 45% t利
End Function
End Class Module
MyModule Sub Main()
Dim BonusPayrollItem As Bonuspayroll = New Bonuspayroll
Dim PayrollItem As Payroll = New Payroll
Dim PayRate As Single = 14.75
Dim HoursWorked As Single = 40
Console.WriteLine("Normal pay is: " & Pay(PayrollItem, HoursWorked, PayRate))
Console.WriteLine("Pay with bonus is: " & Pay(BonusPayrollItem, HoursWorked, PayRate))
End Sub Function Pay(ByVal PayObject As Payroll, ByVal HoursWorked As Single, ByVal
PayRate As Single) Pay = PayObject.PayEmployee(HoursWorked, PayRate) * 0.75 ' withold tax
End Function
End Module
End Namespace 绦薪Y果以下
在程式a中你可以看到Class BonusPayroll ^承自 Payroll,K Override PayEmployee 函怠K援 Pay 函魅氩煌 Class 物件但呼唤不异的办法r,可以有分歧的Y果。所以以上的程式例也同r展F了多型的利用体例。
Free Threading
在以往版本的 VB 中,_l者除非藉由 Win 32 API 否to法_l多 threading 的贸淌剑灾荒茏鐾降幼鳎簿褪浅淌酱a需要循序地绦小Visual Basic.NET 你可以撰 multiple task 的贸淌健C恳 Task 可以在一l thread 绦校绦(process)可所以 free thread。程式a例以下 Imports System.Threading
...
Private iVal, iary(1) As Integer
...
Protected Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs)
Dim t As New Thread(AddressOf AddVal)
t.Start()
End Sub
Sub AddVal()
SyncLock iary
Dim i As Integer
For i = 1 To 1000000
ival += 1
Next textbox1.text = CStr(ival)
end synclock
End Sub
建子(Constructor)息争子(Destructor) 建子是用砜刂 Class 在创立一新的 Instance r所需求做的初始化法式。同拥兀子是 Class 的 Instance Y束r(多是O定 Nothing)所需求做的法式,如放系yY源等等。 在原本的 VB 中,可以使用 Class_Initialize() 和 Class_Terminate() 事务法式(Event Procedure)沓跏蓟蛟 Instance Y束r绦小
在 Visual Basic.NET 中改以 Sub New() 和 Sub Destruct() 法式碜鼋子c解子的幼鳌
Sub New() 办法只 Class 创立r绦幸淮危页艘酝 Class 其他的建子或是衍生 Class 的建子的第一行程式a呼唤以外,不成以在任何其他中央呼唤利用。且 Sub New() 办法之鹊某淌酱a在绦r,]有任何 Class 鹊某T已被创立出怼 .NET 绦协h境谇宓粑锛r自雍艚兴 Sub Destruct() 办法,@一副函狄膊豢梢员缓艚惺褂谩
.NET 绦协h境在系yQ定物件不需求存在rr忧宓粼物件。c Class_Terminate 和 Sub New() 分歧的是,你o法_切地晓得 .NET 绦协h境r呼唤 Sub Destruct(),只能_定的是υ物件最後的一⒄(reference)被放後,系y雍艚 Sub Destruct()。
■ 利用 Sub New() 斫祷慕子 --要创立一 class 的建子可以在 class 定x鹊娜魏蔚胤阶 Sub New() 副函怠=子的第一行程式a必是呼唤基A Class 的建子或是统一 Class 绕渌慕子,@保C被^承的物件谘苌奈锛俺跏蓟瓿伞I踔潦钱你在创立你本人的基A class r,也凡是艚 MyBase.New 沓跏蓟A的物件,因樗械 Class 最K都是^承自 Object Class。
在呼唤完父物件的建子後,在 Sub New() 副函燃由铣跏蓟物件所需求的幼鳌Sub New() 副函悼梢越邮担缦铝械某淌酱a例。
■ 利用 Sub Destruct() 解子 --要创立 class 的解子,可以在 class 的定x热魏蔚胤郊由 Sub Destruct() 副函怠D憧梢栽谠副函燃由厢放物件,P]n案等等任务。
程式a例以下
Imports System
Namespace MyNamespace
Module MyModule
Class Truck
Private iWheels As Integer
Sub New(iInitialWheels As Integer)
MyBase.New '呼唤基A Class 的建子
iWheels=iInitialWheels
End Sub
Sub Destruct()
'绦幸恍┬枰幼
End Sub
Property Wheels As Integer
Get
Wheels=iWheels
End Get
Set
iWheels = Value
End Set
End Property
End Class
Sub Main()
Dim t as Truck = New Truck(18)
Console.WriteLine("@是一部 {0} 大卡",t.Wheels)
Console.Write("入您想要改b的: ")
t.Wheels = CInt(Console.ReadLine())
Console.WriteLine("你已把它改b成 " & t.Wheels & " 大卡")
End Sub
End Module
End Namespace 绦薪Y果以下
DelegateDelegates 的行橄褚 type-safe,物件蚴胶抵(object-oriented function pointer)。使用 delegate 鬟f用 VB 的 addressof \算子获得 class 副函档闹私o其他的 VB class 副函怠Mǔ Delegate 碜鍪录砗担簿褪钱事务l生r要自绦械暮怠
每 delegate class 定x一建子,利用r魅胍物件办法的指水作是怠档母袷饺缦
AddressOf [.]<办法名Q>
在gr期, 必是一 class 或是一介面(interface),K且有著一合适 delegate class 所宣布的办法格局的办法。
@办法可所以同享的(class)办法或是 instance 办法。 要|l delegate class 的 instance 鹊姆椒ū仨要呼唤冉ǖ Invoke 办法,整程式a例以下
Imports System
Namespace TestDelegate
Public Delegate Sub EventHandler(ByVal strText As String)
Class EventTake
Sub GetEvent(ByVal strIn As String)
console.WriteLine("Delegate 事务 " & strIn)
End Sub
End Class
Class EventRaise
Sub UseInvoke()
Dim c As New EventTake()
Dim DelSub As EventHandler
delsub = New EventHandler(AddressOf c.getevent)
delsub.Invoke("一些r")
End Sub
End Class
Module Module1
Shared Sub Main()
Dim c2 As New EventRaise()
c2.UseInvoke()
End Sub
End Module
End Namespace 绦薪Y果以下
Active Server Page技术为应用开发商提供了基于脚本的直观、快速、高效的应用开发手段,极大地提高了开发的效果。在讨论ASP的安全性问题之前,让我们来看看ASP是怎么工作的。 |
|