编辑“︁
Visual Basic .NET
”︁(章节)
跳转到导航
跳转到搜索
Template:Editnotice load/content
警告:
您没有登录。如果您进行任何编辑,您的IP地址会公开展示。如果您
登录
或
创建账号
,您的编辑会以您的用户名署名,此外还有其他益处。
反垃圾检查。
不要
加入这个!
===物件導向=== 物件導向時,類的聲明範例: <syntaxhighlight lang="vbnet"> Public Class className [Inherits bassClassName] Public varName As Integer '資料成員 Public [ReadOnly/WriteOnly] Property propertyName() As Integer '屬性 Public Get Return m_var End Get Public Set(ByVal value As Integer) m_var=value End Set End Property Public Sub subName(ByVal param1 As Integer) '方法 End Sub Public Function funcName(ByVal param2 As Integer ) As Integer '函數 Return 101 End Function [atrributive_list][accessibiliby][Shadows]Event eventName([Parameter]) [Implements interfaces.event] '事件 Public Sub new([Parameter]) '類的構造子(constructor),可以有多個(即可以重載) End Sub End Class </syntaxhighlight> 上述示例中的Public關鍵字表示可存取性(accessibility),表示可以被任意代碼存取;它可以替換為其他的可存取性:Private(僅限該Class自身存取)、Friend(僅限同一項目中的代碼存取)、Protected(僅限自身或衍生類別存取)、Protected Friend等。如果使用ReadOnly,則表示資料成員或屬性是唯讀;WriteOnly表示只寫。Shadows關鍵字表示覆蓋父類中同名(但不一定參數相同)的Event。使用關鍵字MyBase引用基礎類別。 類可用繼承修飾詞:NotInheritable關鍵字,表示該類不能做基礎類別;MustInherit關鍵字,表示這是一個抽象類。 類的屬性與方法能否被覆蓋:Overridable關鍵字表示可被覆蓋;Overrides關鍵字表示覆蓋了基礎類別中同名的方法或屬性;NotOverridable關鍵字表示不可覆蓋;MustOverride表示方法或屬性僅聲明沒有實現,這時該類必須有MustInherit修飾詞,是一個抽象類或者介面,僅能包含屬性、方法、函數的聲明。 如同其他.Net語,Visual Basic不允許多重繼承,但可以同時實現多個interface。 ====介面(interface)==== 介面是一類特殊的抽象類,不能包括可執行代碼與類的資料成員的聲明: <syntaxhighlight lang="vbnet"> Interface interfaceName Event eventName([param]) Property [ReadOnly/WriteOnly] propertyName As typeName Function funcName([param]) As returnTypeName End Interface </syntaxhighlight> 介面中這些成員都強制是Public可存取性。 實現一個介面,使用Implements關鍵字: <syntaxhighlight lang="vbnet"> Public Function GetEnumerator() As IEnumerator _ Implements IEnumerable.GetEnumerator </syntaxhighlight> ====多型(Polymetric)==== 基於繼承的[[多型 (物件導向程式設計)|多型]],是指用基礎類別類型的變數繫結不同的子類別物件,這樣呼叫基礎類別變數的方法,在[[執行時]]動態確定實際執行了哪個衍生類別的同名的方法。多型的優點是可以針對基礎類別(或介面)的方法來寫一個通用的過程或者資料容器,適用於各種不同的衍生類別的具體實現。 ====委托(Delegate)==== {{main|Delegate (CLI)}} 委託本質上是一種Class,衍生自System.Delegate,包含了三部分資料:一個類物件的地址、該物件所屬類的一個方法的地址,以及另一個委託的引用(reference)。前两部分可以實現對一個類物件的方法的呼叫;第三部分把委託形成一個連結串列,使其依次被呼叫執行。如下聲明了一個委託: Delegate Sub PlayHandler(ByVal sender As Object, ByVal e As System.EventArgs) 委託常用於事件處理(Event Handler)。[[.Net Framework]]的事件是類的屬性(實際上是一個巢狀類),用於封裝參數格式固定的委託;該委託的參數總是為(ByVal sender As Object, ByVal e as System.EventArgs),返回值為void(即Sub類型)。例如: Public Class clsName Public Event monitor As PlayHandler End Class 對一個具體的實例,可以給它的事件在運行時動態追加上一個或多個事件處理函數: AddHandlerins.monitor, AddressOf playHandle_1 AddHandle指向引發事件的對象;AddressOf把一個函數或過程名轉化為一個隱式創建的委託實例,用於確定該事件物件所要呼叫的事件處理程序。在AddressOf關鍵字可隱式創建一個引用特定過程的委託的實例。 程序可以抛出一個事件: Dim WithEvents e As New System.EventArgs Dim ins As New clsName RaiseEvent ins.monitor(ins,e) ====using語句==== using语句,定义一个范围,在范围结束时自动释放对象所占用的资源。 -{}- Using conn As New SqlConnection'當在某個代碼段中使用了類別的實例,而希望無論因為什麼原因,只要離開了這個代碼段就自動呼叫這個類別實例的Dispose。 '执行代码 End Using ====自动属性==== 例如: Public Property pa As String="" ==== 對象初始化器 ==== 集合(Collection)对象的初始化与普通类对象的属性初始化,分别使用From与With关键字。例如: <syntaxhighlight lang="vbnet"> Public Class Person Public Property age As Integer Public Property Name As String End Class Dim personList As New List(Of Person) From { New Person With {.Name = "Qiang", .age = 24}, New Person With {.Name = "Wei", .age = 42} } </syntaxhighlight>
摘要:
请注意,所有对Local Chinese Wikipedia的贡献均可能会被其他贡献者编辑、修改或删除。如果您不希望您的文字作品被随意编辑,请不要在此提交。
您同时也向我们承诺,您提交的内容为您自己所创作,或是复制自公共领域或类似自由来源(详情请见
Project:著作权
)。
未经许可,请勿提交受著作权保护的作品!
取消
编辑帮助
(在新窗口中打开)
导航菜单
个人工具
未登录
讨论
贡献
创建账号
登录
命名空间
页面
讨论
大陆简体
不转换
简体
繁體
大陆简体
香港繁體
澳門繁體
大马简体
新加坡简体
臺灣正體
查看
阅读
编辑
查看历史
更多
搜索
导航
首页
最近更改
随机页面
MediaWiki帮助
工具
链入页面
相关更改
特殊页面
页面信息