vb.netof语法 vbnet if

关于VB.NET 的AddressOf 问题你好,EnableDisconnectNotification、 EnableWriteNotification这两个是外部函数吧,是委托吗?
建议使用委托可以看看下面的例子
此示例演示如何使用委托将过程传递给另一个过程 。
委托是一种类型,与任何其他类型一样可在 Visual Basic 中使用 。AddressOf 运算符如果应用到一个过程名,则返回一个委托对象 。
此示例有一个具有委托参数的过程 , 该委托参数可接受对另一个过程的引用,而引用则是通过 AddressOf 运算符获得的 。
创建委托和匹配过程
创建一个名为 MathOperator 的委托 。
Visual Basic
复制代码
Delegate Function MathOperator( _
ByVal x As Double, _
ByVal y As Double _
) As Double
创建一个名为 AddNumbers 的过程,其参数和返回值与 MathOperator 的参数和返回值匹配,以使签名匹配 。
Visual Basic
复制代码
Function AddNumbers( _
ByVal x As Double, _
ByVal y As Double _
) As Double
Return xy
End Function
创建名为 SubtractNumbers 的过程,其签名与 MathOperator 匹配 。
Visual Basic
复制代码
Function SubtractNumbers( _
ByVal x As Double, _
ByVal y As Double _
) As Double
Return x - y
End Function
创建一个名为 DelegateTest 的过程,它接受一个委托作为参数 。
此过程可接受对 AddNumbers 或 SubtactNumbers 的引用,这是因为它们的签名与 MathOperator 签名匹配 。
Visual Basic
复制代码
Sub DelegateTest( _
ByVal x As Double, _
ByVal op As MathOperator, _
ByVal y As Double _
)
Dim ret As Double
ret = op.Invoke(x, y) ' Call the method.
MsgBox(ret)
End Sub
创建一个名为 Test 的过程,它使用 AddNumbers 的委托作为参数调用 DelegateTest 一次,然后使用 SubtractNumbers 的委托作为参数再次调用 。
Visual Basic
复制代码
Protected Sub Test()
DelegateTest(5, AddressOf AddNumbers, 3)
DelegateTest(9, AddressOf SubtractNumbers, 3)
End Sub
调用 Test 时,它首先显示 AddNumbers 对 5 和 3 的操作结果 , 也就是 8 。然后显示 SubtractNumbers 对 9 和 3 的操作结果,也就是 6 。
创建一个名为 MySubDelegate 的委托 。
Delegate Sub MySubDelegate(ByVal x As Integer)
声明一个类,该类包含与该委托具有相同签名的方法 。
Class class1Sub Sub1(ByVal x As Integer)MsgBox("The value of x is: "CStr(x))End SubEnd Class
定义一个方法,该方法创建该委托的实例并通过调用内置的 Invoke 方法调用与该委托关联的方法 。
Protected Sub DelegateTest()Dim c1 As New class1' Create an instance of the delegate.Dim msd As MySubDelegate = AddressOf c1.Sub1' Call the method.msd.Invoke(10)End Sub
VB.net 和C#.net 各有什么优缺点C#.net优点:
运算符重载 。不安全代码(指针和固定内存区)、 无符号整数、移位运算 。
VB的优点:
即时编译、静态事件绑定、条件异常捕获、COM兼容类、宽松的类型检查和变量声明、Visual Basic Runtime库、可选参数、带参数属性、模块等语言特征、动态数组 。
通过VB.NET开发好的程序绝对没有问题(包括Direct X游戏开发) 。虽然VB.NET的资料少,但是只要C#支持的VB.NET都支持(大体上这样,因为都要经过MSIL中间环节 。除了指针之类的VB.NET不支持C#支持,但是没有多大实际用处) 。
vb.net的资料以英文资料居多(只有英文资料才有看头,中国的没有什么好资料),得看看英文水平过不过关 。还有VB.NET的ide也比C#的IDE好得多,代码看得也舒服 。(C#的大括号{}太烦人) 。
至于VB6对C的帮助 , 只是理解上会容易一些,其它用处不大 。有VB6的基础学VBNET会方便一些 , 但是并不是会VB6就会VB.NET,它们差别也不小 。
扩展资料:
NET、C#和ASP.NET之间的区别 :
1、NET是一个平台 , 一个抽象的平台的概念 。
NET 平台其本身实现的方式其实还是库,抽象层面上来看是一个平台 。
基本可以理解的NET核心就是NETFramwork 。
NETFramework包括两个关键组成元素:
a. CommonLanguageRuntime,公共语言运行时(CLR0)-提供内在管理,代码安全性检测等功能 。
b. NETFrameworkClassLibrary,.NET 框架类库(FLC)-提供大量应用类库 , 提高开发效率 。
学习NET Framework 是所有.NET开发人员都必须的,否则开发NET程序永远都是停留在‘外功’的招式,NETramework 是NET开发高手的‘内功’修行之一 。
2、C#是一个程序设计语言 , 仅仅是一个语言 。
程序设计语言仅仅是为了方便开发人员和计算机沟通的工具 , 虽然 C#语法相对 C 和 C 要多一些,但是相对来看 C#语法都比较固定,这样使用起来却都很容易 。我认可一位朋友说的,C#的语法更严谨!
这里回过来看看NET和C#的关系,不得不提的是NET程序的执行过程 。
C#符合NETCLR 中的公共语言运行规范 。CLS:commonlanguagespecification,当然所有的NET Language 都是符合这个规范的例如:VB.NET、XAML 和 C/CL等等 。
C#需要符合NETCLS,是因为NETCLR和JAVA虚拟机类似,有一个中间语言共机器来执行 。所有不同语言的.NET代码在执行前会被编译成同样的中间语言(MSIL),所以所有NET 支持语言都必须符合符合CLS 规范 。
P.S:如果做.NET3.0XAML开发的朋友,可以尝试下ildasm.exe看看XAML的应用程序,会发现原来 XAML其实很简单 。
3、ASP.NET是一个网站开发的技术,仅仅是.NET框架中的一个应用模型 。
用微软公司ASP.NET快速入门中的一句话来解释,ASP.NET是用于生成基于Web的应用程序的内容丰富的编程框架 。
ASP.net 和C#的区别:
编写asp.net通常包括两部分的代码:网页层和后台处理层,网页就是用标记语言来写的,而网页对应的后台处理程序则需要.net语言来完成 , 目前主要是采用c#和vb.net 。
可以说整个的asp.net网站通过c#或者vb.net来实现 。而c#则是ms .netframework的主要语言 , 可以用在网站,桌面应用等方面 。可以算是一种比较流行的编程语言 。
VB.Net和C#有什么差异?还有它们的优点、缺点是什么?一、C#
--- 像VB一样简单,像C一样强大的新语
C#是第一流的面向组件的语言
由 Turbo Pascal, Delphi, and Visual J的首席设计师Anders Hejlsberg 倾心3年设计
所有的语言元素都是真正的对象
开发强壮和可重用的软件
所有的.NET Framework中的基类库(Base Class Library)都由C# 编写
二、VB.NET
--- 完全面向对象的BASIC语言
1.新语言特性
完全面向对象–继承(Inheritance), 重载(overloading), 共享的成员, 结构化异常处理
强壮的语言 –严格的类型检查, 变量声明时初始化,支持垃圾收集(Garbage collection)
强大 –支持委托(Delegates), free threading,Variant 数据类型被 Object 代替
2.与VB6一致的语法
三、2者的区别?
1.语法上的差异
例如循环的写法
VB.NET
For I = 1 To 10
‘ for loop
Next I
C#
For (i=1;i11;i) {
// for loop
}
另外Visual Basic 对大小写不敏感,而C#是大小写敏感的 。
2.C# 具有但 Visual Basic 不具有的特性
指针, 移位操作符, 内嵌的文档(XML)
重载操作符
3.Visual Basic具有但 C# 不具有的特性
更丰富的语法: Events, Try…Catch, Select…Case, 实现 Interface
后期绑定(Late binding), 动态数组, 模块(modules), 可选参数, 参数属性(parameterized properties)
后台编译
VB.NET 中的Of是什么意思泛型参数,表示一种特定类型 , 通常用于集合List,Dictionary之类的 。
原型:Dictionary(Of TKey, TValue)
原型不能直接使用,必须给TKey, TValue指定一个类型(Type)
强类型字典:Dictionary(Of String, String)
表示键和值都为String类型的字典 。
VB.NET 泛函数 system.collections.generic.list(of textbox) 的使用问题!Dim cc As String(),这样只是定义了一个数组类型的变量,它的值为Nothing,所以后面会出NullReferenceException 。
定义数组要这么定义Dim cc(k) As String
还有你为什么要用参数k呢,可以通过list.Count来获得列表中元素的数量 。
Private Function GetText(list As List(Of TextBox)) As String()
If list Is Nothing Then Throw New ArgumentNullException("list")
Dim k As Integer = list.Count - 1
Dim cc(k) As String
For i As Integer = 0 To k
cc(i) = list(i).Text
Next
Return cc
End Function
还有一些其他方法,比如用convertAll
Dim Texts = list.ConvertAll(Function(txt) txt.Text).ToArray
或者LINQ:
Dim ts = (From c In list Select c.Text).ToArray
ConvertAll返回类型就是List(Of T),LINQ返回类型是IEnumerable(OF T) 。它们都有ToArray()方法来转化为数组 , 不过很多时候其实用不着转化成数组 。
上面两种语法至少要VS2008才支持
vb.net中如何用事件和委托 , 会C#中的事件和委托,但不知VB.net中的语法,望给个简单的例子熟悉语法 。一委托:此示例演示如何将方法与委托关联然后通过委托调用该方法 。
创建委托和匹配过程
创建一个名为 MySubDelegate 的委托 。
Delegate Sub MySubDelegate(ByVal x As Integer)
声明一个类,该类包含与该委托具有相同签名的方法 。
Class class1
Sub Sub1(ByVal x As Integer)
MsgBox("The value of x is: "CStr(x))
End Sub
End Class
定义一个方法,该方法创建该委托的实例并通过调用内置的 Invoke 方法调用与该委托关联的方法 。
Protected Sub DelegateTest()
Dim c1 As New class1
' Create an instance of the delegate.
Dim msd As MySubDelegate = AddressOf c1.Sub1
' Call the method.
msd.Invoke(10)
End Sub
二、事件
下面的示例程序阐释如何在一个类中引发一个事件,然后在另一个类中处理该事件 。AlarmClock 类定义公共事件 Alarm,并提供引发该事件的方法 。AlarmEventArgs 类派生自 EventArgs,并定义 Alarm 事件特定的数据 。WakeMeUp 类定义处理 Alarm 事件的 AlarmRang 方法 。AlarmDriver 类一起使用类 , 将使用 WakeMeUp 的 AlarmRang 方法设置为处理 AlarmClock 的 Alarm 事件 。
该示例程序使用事件和委托和引发事件中详细说明的概念 。
示例
' EventSample.vb.
'
Option Explicit
Option Strict
Imports System
Imports System.ComponentModel
Imports Microsoft.VisualBasic
Namespace EventSample
' Class that contains the data for
' the alarm event. Derives from System.EventArgs.
'
Public Class AlarmEventArgs
Inherits EventArgs
Private _snoozePressed As Boolean
Private nrings As Integer
'Constructor.
'
Public Sub New(snoozePressed As Boolean, nrings As Integer)
Me._snoozePressed = snoozePressed
Me.nrings = nrings
End Sub
' The NumRings property returns the number of rings
' that the alarm clock has sounded when the alarm event
' is generated.
'
Public ReadOnly Property NumRings() As Integer
Get
Return nrings
End Get
End Property
' The SnoozePressed property indicates whether the snooze
' button is pressed on the alarm when the alarm event is generated.
'
Public ReadOnly Property SnoozePressed() As Boolean
Get
Return _snoozePressed
End Get
End Property
' The AlarmText property that contains the wake-up message.
'
Public ReadOnly Property AlarmText() As String
Get
If _snoozePressed Then
Return "Wake Up!!! Snooze time is over."
Else
Return "Wake Up!"
End If
End Get
End Property
End Class
' Delegate declaration.
'
Public Delegate Sub AlarmEventHandler(sender As Object, _
e As AlarmEventArgs)
' The Alarm class that raises the alarm event.
'
Public Class AlarmClock
Private _snoozePressed As Boolean = False
Private nrings As Integer = 0
Private stopFlag As Boolean = False
' The Stop property indicates whether the
' alarm should be turned off.
'
Public Property [Stop]() As Boolean
Get
Return stopFlag
End Get
Set
stopFlag = value
End Set
End Property
' The SnoozePressed property indicates whether the snooze
' button is pressed on the alarm when the alarm event is generated.
'
Public Property SnoozePressed() As Boolean
Get
Return _snoozePressed
End Get
Set
_snoozePressed = value
End Set
End Property
' The event member that is of type AlarmEventHandler.
'
Public Event Alarm As AlarmEventHandler
' The protected OnAlarm method raises the event by invoking
' the delegates. The sender is always this, the current instance
' of the class.
'
Protected Overridable Sub OnAlarm(e As AlarmEventArgs)
RaiseEvent Alarm(Me, e)
End Sub
' This alarm clock does not have
' a user interface.
' To simulate the alarm mechanism it has a loop
' that raises the alarm event at every iteration
' with a time delay of 300 milliseconds,
' if snooze is not pressed. If snooze is pressed,
' the time delay is 1000 milliseconds.
'
Public Sub Start()
Do
nrings= 1
If stopFlag Then
Exit Do
Else
If _snoozePressed Then
System.Threading.Thread.Sleep(1000)
If (True) Then
Dim e As New AlarmEventArgs(_snoozePressed, nrings)
OnAlarm(e)
End If
Else
System.Threading.Thread.Sleep(300)
Dim e As New AlarmEventArgs(_snoozePressed, nrings)
OnAlarm(e)
End If
End If
Loop
End Sub
End Class
' The WakeMeUp class has a method AlarmRang that handles the
' alarm event.
'
Public Class WakeMeUp
Public Sub AlarmRang(sender As Object, e As AlarmEventArgs)
Console.WriteLine((e.AlarmTextControlChars.Cr))
If Not e.SnoozePressed Then
If e.NumRings Mod 10 = 0 Then
Console.WriteLine(" Let alarm ring? Enter Y")
Console.WriteLine(" Press Snooze? Enter N")
Console.WriteLine(" Stop Alarm? Enter Q")
Dim input As String = Console.ReadLine()
If input.Equals("Y") Or input.Equals("y") Then
Return
Else
If input.Equals("N") Or input.Equals("n") Then
CType(sender, AlarmClock).SnoozePressed = True
Return
Else
CType(sender, AlarmClock).Stop = True
Return
End If
End If
End If
Else
Console.WriteLine(" Let alarm ring? Enter Y")
Console.WriteLine(" Stop Alarm? Enter Q")
Dim input As String = Console.ReadLine()
If input.Equals("Y") Or input.Equals("y") Then
Return
Else
CType(sender, AlarmClock).Stop = True
Return
End If
End If
End Sub
End Class
' The driver class that hooks up the event handling method of
' WakeMeUp to the alarm event of an Alarm object using a delegate.
' In a forms-based application, the driver class is the
' form.
'
Public Class AlarmDriver
Public Shared Sub Main()
' Instantiates the event receiver.
Dim w As New WakeMeUp()
' Instantiates the event source.
Dim clock As New AlarmClock()
' Wires the AlarmRang method to the Alarm event.
AddHandler clock.Alarm, AddressOf w.AlarmRang
clock.Start()
End Sub
End Class
End Namespace
【vb.netof语法 vbnet if】vb.netof语法的介绍就聊到这里吧 , 感谢你花时间阅读本站内容,更多关于vbnet if、vb.netof语法的信息别忘了在本站进行查找喔 。

    推荐阅读