1.不正確
我們提供的服務(wù)有:做網(wǎng)站、成都網(wǎng)站制作、微信公眾號(hào)開發(fā)、網(wǎng)站優(yōu)化、網(wǎng)站認(rèn)證、田陽ssl等。為成百上千企事業(yè)單位解決了網(wǎng)站和推廣的問題。提供周到的售前咨詢和貼心的售后服務(wù),是有科學(xué)管理、有技術(shù)的田陽網(wǎng)站制作公司
Dim abc As myClass,定義一個(gè)可以引用myClass類型對象的變量abc。這個(gè)abc變量存在于棧上。
abc=New myClass。New myClass創(chuàng)建myClass實(shí)例對象,這個(gè)對象存在于托管堆上。然后(同時(shí))讓abc引用(指向)這個(gè)對象。
abc變量在棧上,而對象在托管堆上。
abc儲(chǔ)存的是對象的地址,而不是對象本身。
看下面的代碼
Dim a As myClass,b As myClass,c As myClass
a=New myClass
b=a
c=a
整個(gè)過程中只創(chuàng)建了一個(gè)myClass對象,位于托管堆上。
三個(gè)myClass類型的變量a、b、c位于棧上,都指向了這一個(gè)myClass對象
2.類的成員分 實(shí)例成員 和 靜態(tài)成員
實(shí)例成員 必須在實(shí)例對象上調(diào)用
靜態(tài)成員 可以直接調(diào)用,不需要實(shí)例對象。
VB.NET數(shù)據(jù)類型VB.NET中有12種不同的數(shù)據(jù)類型,可以分成三類:數(shù)值類型、文本類型和混合類型。數(shù)值類型是VB.NET數(shù)據(jù)類型的主要類型,共7種。數(shù)值類型的數(shù)據(jù)類型見下表。 數(shù)據(jù)類型表示方式取 值 范 圍說 明整型Integer–2147483648~2147483647用于表示簡單整數(shù)字節(jié)型Byte0~255用于簡單算術(shù)運(yùn)算。由于這個(gè)類型的變量可以在一個(gè)字節(jié)中存儲(chǔ),所以運(yùn)算速度最快短整型Short–32768~32767是整型的一種形式,相對表示范圍較小長整型Long–9223372036854775808~9223372036854775807是整型的一種形式,相對表示范圍較大單精
度型Single–3.402823E38~–1.401298E-45(對于負(fù)數(shù))和1.401298E-45~3.402823E38(對于正數(shù))用于存放單精度浮點(diǎn)數(shù)雙精
度型Double–1.79869313486232E308~–4.94065645841247E-324(對于負(fù)數(shù))和4.94065645841247E-324~1.79869313486232E308(對于正數(shù))用于存放雙精度浮點(diǎn)數(shù)小數(shù)Decimal當(dāng)小數(shù)位為0的時(shí)候,為–79228162514264337593543950335~
79228162514264337593543950335;當(dāng)小數(shù)位為28的時(shí)候,為–7.9228162514264337593543950335~
7.9228162514264337593543950335常用于存儲(chǔ)貨幣值 數(shù)值類型的數(shù)據(jù)類型 用于存放文本的數(shù)據(jù)類型有兩個(gè)。文本類型的VB.NET數(shù)據(jù)類型見下表。 數(shù) 據(jù) 類 型表 示 方 式說 明字符串型String用于存放任何形式的字符串,包括一個(gè)字符或者多行字符字符型Char用于存放一個(gè)字符,它以0~65535之間數(shù)字的形式存儲(chǔ)文本類型的數(shù)據(jù)類型 其中需要說明的是: (1) 對于String類型,可以存放任何形式的字符串,它可以是純粹的文本,也可以是文本和數(shù)字的組合或者是數(shù)字、日期等。例如"This is a book. "和"12345"都是字符串。對于字符串類型的數(shù)據(jù),可以進(jìn)行相關(guān)的字符串操作,例如連接、截?cái)嗟取?(2) 對于Char類型,可以存儲(chǔ)的只是一個(gè)字符,注意,這個(gè)字符的存儲(chǔ)編碼必需是一個(gè)數(shù)字。在計(jì)算機(jī)系統(tǒng)中,可以顯示很多符號(hào)(不僅僅是英文字母),為了能夠正確地顯示,國際上有通用的標(biāo)準(zhǔn)(例如Unicode編碼),為每個(gè)字符設(shè)定了一個(gè)標(biāo)準(zhǔn)的數(shù)值來表示這個(gè)字符。其余的數(shù)據(jù)類型還有:Date數(shù)據(jù)類型、布爾數(shù)據(jù)類型和Object數(shù)據(jù)類型,其說明見下表。 數(shù) 據(jù) 類 型表 示 方 式說 明日期型Date必須用mm/dd/yyyy的格式表示,也可以存儲(chǔ)時(shí)間(可以存儲(chǔ)00:00:00~23:59:59之間的任何時(shí)間)布爾型Boolean取值為True和False對象型Object 其他數(shù)據(jù)類型 其中需要說明的是:在VB.NET中,對于Boolean類型的數(shù)據(jù),當(dāng)需要把布爾類型的值轉(zhuǎn)換為數(shù)值類型的時(shí)候,會(huì)把True當(dāng)成1來處理,把False當(dāng)作0來處理。當(dāng)需要把VB.NET數(shù)值類型的值轉(zhuǎn)換為布爾類型的時(shí)候,會(huì)把0轉(zhuǎn)換為False,而把其他的非0數(shù)值轉(zhuǎn)換為True。
1. 什么是類和對象?
答:類包含某一類對象的數(shù)據(jù)和過程。對象是類的實(shí)例。
2. 為什么采用類和對象進(jìn)行程序設(shè)計(jì)?
答:以便按照對象定義類,提高程序代碼的可重用性,避免重復(fù)勞動(dòng)。
3. 在同一個(gè)類中,應(yīng)當(dāng)包括哪些對象的屬性和方法?
答:同一類對象的數(shù)據(jù)和過程。
4. VB程序設(shè)計(jì)主要包括哪兩個(gè)方面的內(nèi)容?
答:Windows應(yīng)用程序界面和代碼。
5. 什么是事件驅(qū)動(dòng)?
答:根據(jù)事件轉(zhuǎn)去執(zhí)行相應(yīng)的事件處理過程。
1. 控件是窗體上的 對象 。
2. Visual Basic具有 BASIC程序語言簡單易學(xué)的 優(yōu)點(diǎn),新增了 可視化和面向面向?qū)ο蟪绦蛟O(shè)計(jì)的 熱點(diǎn),是 Windows編程人員廣泛使用的編程 工具。
3. 對象的 屬性 是在其類中定義的數(shù)據(jù)。
4. 對象的 方法 是在其類中定義的過程。
5. 對象本身的動(dòng)作或功能稱為 方法 ,外界施加于某對象的動(dòng)作或操作稱為 事件 。
1.面向過程
是指從功能的角度分析問題,將待解決的問題空間分解成若干個(gè)功能模塊,每個(gè)功能模塊描述一個(gè)操作的具體過程。
2.面向過程程序設(shè)計(jì)
主要是根據(jù)事務(wù)本身的邏輯過程進(jìn)行編程的一種方法。
3.面向?qū)ο蟪绦蛟O(shè)計(jì)
是一種計(jì)算機(jī)編程架構(gòu),是由單個(gè)能夠起到子程序作用的單元或?qū)ο蠼M合而成。即按照對象編寫程序。
4.事件驅(qū)動(dòng)程序設(shè)計(jì)
是一種電腦程式設(shè)計(jì)模型。這種模型的程式執(zhí)行流程是由使用者的動(dòng)作或者是由其他程式的訊息來決定的。
5.函數(shù)
是一種特定的運(yùn)算,在程序中使用一個(gè)函數(shù)時(shí),只要給出函數(shù)名并給出一個(gè)或多個(gè)參數(shù),就能得到它的函數(shù)值
6.過程
是程序中可以執(zhí)行的一段代碼,過程包含在一個(gè)聲明語句和一個(gè)結(jié)束語句之間
7.類
是所有具有共同特征的事物的抽象,是一個(gè)抽象的概念(類是一組具有相同屬性特征的對象的抽象描述,是面向?qū)ο蟪绦蛟O(shè)計(jì)的又一個(gè)核心概念或者類是對一組對象共同具有的屬性和行為的抽象,具有封裝和隱藏性、還具有繼承性)。
8.對象
是一個(gè)屬性集合及其操作的封裝體(對象是用來描述現(xiàn)實(shí)世界中客體的部件,是面向?qū)ο筌浖到y(tǒng)在運(yùn)行時(shí)刻的基本單位)。
類是對象的抽象,對象是類的實(shí)例。
9.事件
窗體或控件識(shí)別的動(dòng)作
10.事件驅(qū)動(dòng)
根據(jù)事件轉(zhuǎn)去執(zhí)行相應(yīng)的事件處理過程。
11.屬性
是一個(gè)對象的特性,不同的對象有不同的屬性
12.算法
指解決某個(gè)問題的嚴(yán)格方法,描述有始有終的計(jì)算過程。
5.屬性窗口中屬性值被設(shè)置的方式有哪幾種?
6種:輸入 選取 瀏覽 賦值 默認(rèn) 拖動(dòng)
1.程序代碼是由一行一行的 語句 所組成。
3.在程序代碼中可將一個(gè)語句分成兩段的特殊符號(hào)為( _ )。
5.數(shù)值變量如果沒有設(shè)置初值,則內(nèi)定值為 0 。
7.如果有一個(gè)變量,可能會(huì)存放數(shù)值數(shù)據(jù)或字符串?dāng)?shù)據(jù),此時(shí)可以聲明該變量為 對象變量。
9. Integer數(shù)據(jù)類型占 4 bytes的內(nèi)存空間,可以表示的數(shù)值范圍為 -2,147,483,648~2,147,483,647 的整數(shù)
3.VB.NET程序語言數(shù)據(jù)類型的種類有哪些?
(1)數(shù)值型
①整形數(shù):短整形(Short)、整形(Integer)、長整型(Long)
②字節(jié)型(Byte)
③實(shí)型數(shù):單精度型(Single)、雙精度型(Double)
④貨幣型(Decimal)
(2)字符型(Char)和字符串型(String)
(3)邏輯型/布爾型(Boolean)
(4)日期型(Date)
(5)對象型(Object)[即可變型(Variant)]
1.局部變量、全局變量、跨模塊變量分別在何處聲明?其生存期分別是多少?
局部變量在程序內(nèi)聲明。生存期為從所在的程序運(yùn)行開始到程序結(jié)束。
全局變量在窗體內(nèi)所有程序的外邊聲明。生存期為由該變量聲明開始,一直到程序退出運(yùn)行為止。
跨模塊變量在一般模塊的聲明區(qū)用Public來聲明。生存期為從一個(gè)Windows應(yīng)用程序項(xiàng)目文件開始運(yùn)行到結(jié)束。
3.什么是靜態(tài)變量?
靜態(tài)變量是在離開程序時(shí)能夠繼續(xù)保留目前的值,待下回進(jìn)入該程序時(shí)能夠繼續(xù)保留的變量值的局部變量,用Static關(guān)鍵字聲明。
(一)問答題
1.請簡單說明在程序中使用程序的好處。
(1)程序可以重復(fù)使用,以方便維護(hù)與程序調(diào)試。
(2)程序可以讓其他工程或項(xiàng)目使用。
(3)程序的邏輯簡單、明確,可以讓程序變得簡單且可讀性高。
(4)程序具有模塊化的功能,因此可以將一個(gè)大的應(yīng)用程序分成數(shù)個(gè)小的且不同功能的程序,讓不同的程序設(shè)計(jì)師分別編寫?yīng)毩⒉煌δ艿某绦颍⒁詧F(tuán)隊(duì)開發(fā),加快應(yīng)用程序開發(fā)的時(shí)間。
3.試比較傳值調(diào)用與傳址調(diào)用的差異。
(1)聲明方式不同:
傳值——在程序中的虛自變量之前加上ByVal
傳址——在程序中的虛自變量之前加上ByRef
(2)占用內(nèi)存不同
傳值——調(diào)用程序的實(shí)自變量與被調(diào)用程序的虛自變量占用不同內(nèi)存
傳址——調(diào)用程序的實(shí)自變量與被調(diào)用程序的虛自變量占用同一地址的內(nèi)存,也就是說,在做參數(shù)傳遞時(shí),調(diào)用程序中的實(shí)自變量是將自己本身的內(nèi)存地址傳給被調(diào)用程序的虛自變量
(3)虛自變量更改結(jié)果不同
傳值——使用傳值調(diào)用可以防止變量被程序修改
傳址——被調(diào)用程序可以通過虛自變量將值傳回給調(diào)用程序
5.什么是程序多載?
程序多載是使用不同的自變量串行或數(shù)據(jù)類型來加以區(qū)分相同名稱的程序。
open函數(shù)用來打開一個(gè)文件,其調(diào)用的一般形式為:
文件指針名=fopen(文件名,使用文件方式);
其中,
“文件指針名”必須是被說明為FILE
類型的指針變量;
“文件名”是被打開文件的文件名;
“使用文件方式”是指文件的類型和操作要求。
“文件名”是字符串常量或字符串?dāng)?shù)組。
例如:
FILE
*fp;
fp=("file
a","r");
其意義是在當(dāng)前目錄下打開文件file
a,只允許進(jìn)行“讀”操作,并使fp指向該文件。
又如:
FILE
*fphzk
fphzk=("c:\\hzk16","rb")
其意義是打開C驅(qū)動(dòng)器磁盤的根目錄下的文件hzk16,這是一個(gè)二進(jìn)制文件,只允許按二進(jìn)制方式進(jìn)行讀操作。兩個(gè)反斜線“\\
”中的第一個(gè)表示轉(zhuǎn)義字符,第二個(gè)表示根目錄。
使用文件的方式共有12種,下面給出了它們的符號(hào)和意義。
文件使用方式
意義
“rt”
只讀打開一個(gè)文本文件,只允許讀數(shù)據(jù)
“wt”
只寫打開或建立一個(gè)文本文件,只允許寫數(shù)據(jù)
“at”
追加打開一個(gè)文本文件,并在文件末尾寫數(shù)據(jù)
“rb”
只讀打開一個(gè)二進(jìn)制文件,只允許讀數(shù)據(jù)
“wb”
只寫打開或建立一個(gè)二進(jìn)制文件,只允許寫數(shù)據(jù)
“ab”
追加打開一個(gè)二進(jìn)制文件,并在文件末尾寫數(shù)據(jù)
“rt+”
讀寫打開一個(gè)文本文件,允許讀和寫
“wt+”
讀寫打開或建立一個(gè)文本文件,允許讀寫
“at+”
讀寫打開一個(gè)文本文件,允許讀,或在文件末追加數(shù)據(jù)
“rb+”
讀寫打開一個(gè)二進(jìn)制文件,允許讀和寫
“wb+”
讀寫打開或建立一個(gè)二進(jìn)制文件,允許讀和寫
“ab+”
讀寫打開一個(gè)二進(jìn)制文件,允許讀,或在文件末追加數(shù)據(jù)
對于文件使用方式有以下幾點(diǎn)說明:
1)
文件使用方式由r,w,a,t,b,+六個(gè)字符拼成,各字符的含義是:
r(read):
讀
w(write):
寫
a(append):
追加
t(text):
文本文件,可省略不寫
b(banary):
二進(jìn)制文件
+:
讀和寫
2)
凡用“r”打開一個(gè)文件時(shí),該文件必須已經(jīng)存在,且只能從該文件讀出。
3)
用“w”打開的文件只能向該文件寫入。若打開的文件不存在,則以指定的文件名建立該文件,若打開的文件已經(jīng)存在,則將該文件刪去,重建一個(gè)新文件。
4)
若要向一個(gè)已存在的文件追加新的信息,只能用“a”方式打開文件。但此時(shí)該文件必須是存在的,否則將會(huì)出錯(cuò)。
5)
在打開一個(gè)文件時(shí),如果出錯(cuò),fopen將返回一個(gè)空指針值NULL。在程序中可以用這一信息來判別是否完成打開文件的工作,并作相應(yīng)的處理。因此常用以下程序段打開文件:
6)
if((fp=fopen("c:\\hzk16","rb")==NULL)
{
printf("\nerror
on
open
c:\\hzk16
file
VB.NET和VB6.0有什么區(qū)別
Visual Basic .NET是Microsoft Visual Studio .NET套件中主要組成部分之一。.NET版本的Visual Basic增加了更多特性,而且演化為完全面向?qū)ο螅ň拖馛++)的編程語言。本文將介紹VB.NET的新特性,并比較VB6.0/VB.NET之間的區(qū)別,闡述如何利用VB.NET編寫簡單的應(yīng)用程序。
1.1 什么是 VB.NET? Microsoft推出全新的編程和操作系統(tǒng)Framework——.NET,支持多種語言利用公共.NET庫開發(fā)應(yīng)用程序,這些應(yīng)用程序在.NET Framework上運(yùn)行。使用Visual Basic在.NET Framework上編程,這就是VB.NET。
首先,讓我演示在VB.NET中寫最簡單的控制臺(tái)程序:Hello World。
1.2 Hello, World!“Hello World!”是初學(xué)者學(xué)習(xí)Windows編程的代表性程序。我們的第一個(gè)程序就叫做“Hello VB.NET World!”。該程序在控制臺(tái)輸出一句話:“Hello VB.NET World!”,代碼如下所示:
代碼 1.1: Hello VB.NET World例子Imports System
Module Module1
Sub Main()
System.Console.WriteLine("Hello VB.NET World!")
End Sub
End Module
1.3 VB.NET 編輯器和編譯器你可以在記事本或VS.NET IDE等任意文本編輯器中撰寫上述代碼,然后保存為HelloWorld.vb。 代碼編寫完成之后,要么在命令行、要么在VS.NET IDE中編譯它。在Microsoft .NET Framework SDK中已經(jīng)包括VB.NET編譯器vbc.exe[][1],從IDE或是命令行都可以調(diào)用。要從命令行編譯HelloWorld.vb,請?jiān)诿钚写翱谳斎?/p>
vbc HelloWorld.vb /out:HelloWorld.exe /t:exe
編譯結(jié)束后,HelloWorld.exe被創(chuàng)建到當(dāng)前目錄下。在資源管理其中雙擊圖標(biāo)或在命令行執(zhí)行,程序正確地運(yùn)行了。祝賀你進(jìn)入VB.NET開發(fā)者的行列。
Imports 語句
如你所知,大部分的.NET類型都在名字空間(namespace)中定義。Namespace是定義和管理類別的范疇。察看.NET Framework Class Library,可以看到數(shù)以百計(jì)的namespace。例如,System namespace就包括了Console、Object等類型定義。如果想使用Console類,需要用Imports指令導(dǎo)入System namespace。如下所示:
Imports System甚至可以明確地調(diào)用namespace而無需用Import導(dǎo)入。下面的例子展示了不用Import的“Hello World!”程序:
代碼1.2: Hello VB.NET World例子Module Module1
Sub Main()
System.Console.WriteLine("Hello VB.NET World!")
End SubEnd Module1.4 解析 "Hello VB.NET World!"程序第一行是:
Imports System; System namespace定義了Console類,該類用于讀寫控制臺(tái)(命令行窗口)。然后你定義了一個(gè)module:Module Module1
…End Module所有的VB程序都包括一個(gè)Main()方法,即應(yīng)用程序入口點(diǎn)。在例子程序中,我們調(diào)用Console.WriteLine()向控制臺(tái)寫入“Hello VB.NET World!”:
Sub Main()
Console.WriteLine(“Hello VB.NET World!”) End SubWriteLine()方法歸屬于Console類,它負(fù)責(zé)向控制臺(tái)寫一個(gè)帶有行結(jié)束符的字符串。如前所述,Console類定義于System namespace,你通過直接引用來控制類成員。
Console類負(fù)責(zé)讀寫系統(tǒng)控制臺(tái)。讀控制臺(tái)輸入用Read和ReadLine方法,向控制臺(tái)輸出用WriteLine方法。
表1.1 Console類定義的方法
方法 用途 例子
Read 讀入單個(gè)字符 int i = Console.Read();
ReadLine 讀入一行 string str = Console.ReadLine();
Write 寫一行 Console.Write("Write: 1");
WriteLine 寫一行,并帶上行結(jié)束符
Console.WriteLine("Test Output Data with Line");
1.5 VB.NET有什么新特點(diǎn)? VB.NET比 VB6.0更加穩(wěn)定,而且完全面向?qū)ο?。也許你還記得,VB6.0不支持繼承、重載和接口,所以不是真正面向?qū)ο蟮?。而VB.NET則支持這些面向?qū)ο筇匦?。VB6.0有兩個(gè)薄弱環(huán)節(jié)——多線程和異常處理。在VB.NET中,開發(fā)多線程應(yīng)用和使用C++/C#別無二致,結(jié)構(gòu)化異常處理也得到支持。稍后我們會(huì)詳細(xì)解釋這些特性。
下面是VB.NET的特性列表——
·面向?qū)ο蟮木幊陶Z言。支持繼承、重載、接口、共享成員和構(gòu)造器?!ぶС炙械腃LS特性,如存取控制.NET類、與其它.NET語言交互、元數(shù)據(jù)、公共數(shù)據(jù)類型、委托等等。·多線程支持?!そY(jié)構(gòu)化異常處理。 1.6 名字空間與集合 前面討論了我們的第一個(gè)VB.NET程序。該程序中首先引人注意的是名字空間(namespace)。在.NET參考文檔中,你會(huì)發(fā)現(xiàn)每個(gè)類都?xì)w屬于某個(gè)namespace。那么,namespace到底是什么?
一個(gè)namespace是類和組件的邏輯組合,其目的在于將.NET class按類別定義。微軟借用了C++ class packaging概念:namespace來描述這種組合。.NET Framework中的組件被稱為集合(assembly)。全部.NET代碼在數(shù)百個(gè)庫文件(DLL)中定義。Namespace把a(bǔ)ssembly中定義的類組織起來。一個(gè)namespace可以包括多個(gè)assembly,一個(gè)assembly也可以在多個(gè)namespace中定義。 namespace樹的根節(jié)點(diǎn)是System namespace。在.NET Library中,每個(gè)class都在一組相似的類別中定義。例如,System.Data namespace只包括數(shù)據(jù)相關(guān)類。同樣,System.Multithreading只包括多線程類。
在使用.NET支持的語言(如C#、VB.NET、C++.NET等)創(chuàng)建新應(yīng)用程序時(shí),你會(huì)注意到每個(gè)應(yīng)用程序都被定義為一個(gè)namespace,而所有的class都?xì)w屬于這個(gè)namespace。通過引用這個(gè)namespace,其它應(yīng)用程序就能存取這些class。 在.NET中,代碼被編譯為中間語言(Intermediate Language,IL),assembly中存儲(chǔ)了IL代碼、元數(shù)據(jù)和其它資源文件。同一個(gè)assembly可以附屬于一個(gè)或多個(gè)Exe/DLL。所有的.NET庫都存儲(chǔ)在assembly中。
1.7 VB.NET: 完全面向?qū)ο蟮木幊陶Z言抽象、封裝、多態(tài)、繼承是面向?qū)ο笳Z言的四個(gè)基本屬性。VB6.0不支持繼承,而VB.NET則不然。所以,和C++一樣,VB.NET也是完全面向?qū)ο蟮木幊陶Z言。
Class 和 ModuleVB.NET用Class...End Class語句對創(chuàng)建class。每個(gè)VB.NET至少包括一個(gè)Module(模塊)。Module在Module…End Module語句對中實(shí)現(xiàn)。應(yīng)用程序的主要模塊是Main方法,亦即應(yīng)用程序入口點(diǎn)。
和VB6.0相似的地方是,都可以使用Function/Sub關(guān)鍵字定義方法。下面的例子顯示了如何創(chuàng)建class、添加方法,并從主程序調(diào)用方法: Imports System
Module Module1
Sub Main()
Dim cls As TestClass = New TestClass
Console.WriteLine(cls.MyMethod)
End Sub
Class TestClass
Function MyMethod() As String
Return "Test Method"
End Function
End Class
End ModuleProperty屬性(Property)是類變量的公共描述。Property…End Property語句用以創(chuàng)建property。屬性的Get/Set方法分別用于取得和設(shè)置屬性值。下面的例子中,Data是TestClass的屬性。
Imports System
Imports System.Console
Module Module1
Sub Main()
Dim cls As TestClass = New TestClass
WriteLine(cls.MyMethod)
WriteLine(cls.Data)
cls.Data = "New Data"
WriteLine(cls.Data)
End Sub
End Module
Class TestClass
Private strData As String = "Some Data"
Function MyMethod() As String
Return "Test Method!"
End Function
' Adding Data property to the class
Public Property Data() As String
Get
Return strData
End Get
Set(ByVal Value As String)
strData = Value
End Set
End Property
重載VB.NET通過overload關(guān)鍵字支持方法重載。使用這個(gè)關(guān)鍵字,你可以定義同名但不同參數(shù)的方法。
類成員訪問域
除了原有的Private和Public,VB.NET引入了幾個(gè)新關(guān)鍵字。全部訪問域關(guān)鍵字列表如下:
關(guān)鍵字 作用域
Private 限于class內(nèi)部
Public 可以從class外訪問
Friend 限于class所屬的應(yīng)用程序內(nèi)
Protected 只能被class和其派生類訪問
Protected Friend 能被class、應(yīng)用程序和派生類訪問
繼承繼承是面向?qū)ο缶幊陶Z言中最常用的技術(shù)。繼承讓你能夠重用類代碼和功能。
VB.NET支持繼承,而VB6.0則不支持。繼承的好處在于你能使用任何人編寫的類,從這些類派生自己的類,然后在自己的類中調(diào)用父類功能。在下面的例子中,Class B派生自Class A,我們將從Class B中調(diào)用Class A的方法MethodA。
Imports System
Imports System.Console
Module Module1
Sub Main()
Dim bObj As B = New B
WriteLine(bObj.MethodA())
End Sub
End Module
' Class A defined
Public Class A
Function MethodA() As String
Return "Method A is called."
End Function
End Class
'Class B, inherited from Class A. All members (Public and Protected)
' can be access via B now.
Public Class B
Inherits A
Function MethodB() As String
Return "Method B is called."
End Function
End Class
可以從一個(gè)class中派生多個(gè)自定義class,也可以從多個(gè)class派生一個(gè)自定義class。
共享的成員類的共享成員被類的所有實(shí)體共享。共享成員可能是屬性、方法或字段/值域。在你不想讓用戶全面控制自己的類時(shí),共享成員相當(dāng)有用。例如,你可以開發(fā)一個(gè)類庫,讓用戶通過共享成員使用其中的部分功能。
可以通過class本身引用共享成員,而無需通過類的實(shí)體。例如:Module Module1
Sub Main()
WriteLine(A.MethodA())
End Sub
End Module
' Class A defined
Public Class A
Shared Function MethodA() As String
Return "Method A is called."
End Function
End Class
多線程VB語言的一大弱點(diǎn)就是缺乏編寫自由線程(free-threaded)程序的能力。在.NET Framework中,所有語言共享CRL(Common Runtime Library,公共運(yùn)行庫),也就是說,你可以用VB.NET、C#或其它.NET語言編寫同樣的程序。
System.Threading namespace定義了線程類。我們只需要引入System.Threading namespace,即可使用線程類。
System.Threading.Thread類提供線程對象,可以使用Thread類創(chuàng)建或破壞線程。
創(chuàng)建線程使用Thread類的實(shí)體創(chuàng)建一個(gè)新線程,然后用Thread.Start方法開始執(zhí)行線程。線程構(gòu)造器接受一個(gè)參數(shù),該參數(shù)指明你要在線程中執(zhí)行的procedure。在下例中,我想在oThread1(Thread類的一個(gè)實(shí)體)的第二線程中執(zhí)行SecondThread過程:
oThread1 = New Thread(AddressOf SecondThread)
SecondThread procedure looks like below:
Public Sub SecondThread()
Dim i As Integer
For i = 1 To 10
Console.WriteLine(i.ToString())
Next
End Sub
然后,調(diào)用Thread.Start()開始線程:
oThread1.Start()
下面的代碼創(chuàng)建兩個(gè)第二線程:
Imports System
Imports System.Threading
Module Module1
Public oThread1 As Thread
Public oThread2 As Thread
Sub Main()
oThread1 = New Thread(AddressOf SecondThread)
oThread2 = New Thread(AddressOf ThirdThread)
oThread1.Start()
oThread2.Start()
End Sub
Public Sub SecondThread()
Dim i As Integer
For i = 1 To 10
Console.WriteLine(i.ToString())
Next
End Sub
Public Sub ThirdThread()
Dim i As Integer
For i = 1 To 10
Console.WriteLine("A" + i.ToString())
Next
End Sub
End Module
破壞線程 調(diào)用Abort方法來破壞(中止)一個(gè)線程。在調(diào)用Abort之前,確保用IsAlive判斷線程處于活動(dòng)狀態(tài)。
If oThread1.IsAlive Then
oThread1.Abort()
End If
暫停線程可以使用Sleep方法來暫停線程執(zhí)行。Sleep方法接受一個(gè)以毫秒為單位的參數(shù),指明線程應(yīng)當(dāng)暫停多長時(shí)間。
下面的例子讓線程暫停1秒鐘:
oThread2.Sleep(1000)你也可以使用Suspend和Resume方法來掛起和繼續(xù)線程執(zhí)行。
設(shè)定線程優(yōu)先級(jí)Thread類的Priority屬性用于設(shè)定線程優(yōu)先級(jí)。該屬性可以設(shè)置為Normal,AboveNormal,BelowNormal,Highest和Lowest。如:
oThread2.Priority = ThreadPriority.Highest線程與Apartment使用ApartmentState屬性設(shè)置線程的apartment類型,該屬性值可以為STA,MTA或是Unknown[][2]:
oThread.ApartmentState = ApartmentState.MTAMTS意味著可以使用多線程模式,而STA則只能是單線程執(zhí)行。
Public Enum ApartmentState
{
STA = 0,
MTA = 1,
Unknown = 2,
}
1.8 結(jié)構(gòu)化異常處理異常處理也被稱之為錯(cuò)誤處理。作為VB程序員,你一定對On Error Goto和On Error Resume Next這些VB6.0錯(cuò)誤處理語句耳熟能詳。這種類型的錯(cuò)誤處理被稱為非結(jié)構(gòu)化異常處理(Unstructured Exception Handling)。而在VB.NET中,Microsoft推出了結(jié)構(gòu)化異常處理機(jī)制。VB.NET支持類似C++的TryCatch..Finally控制。Try..Catch..Finally結(jié)構(gòu)如下: Try
' 可能導(dǎo)致異常的代碼
Catch
' 當(dāng)異常發(fā)生時(shí)處理異常的代碼
Finally
' 清理現(xiàn)場
End Try
Try語句塊用以拋出異常。如果異常發(fā)生,在Catch語句塊中處理。Finally語句塊是可選的,在需要釋放資源時(shí)特別有用。
1.9 VB6.0與VB.NET的不同之處除了上面談到的語言進(jìn)化,還有一些語法上的變化。所有這些語言和語法的變化在MSDN中均可查到,本文只作簡單介紹。
數(shù)據(jù)類型(Data Type)的改變VB.NET中有些數(shù)據(jù)類型得到改進(jìn)。下面是變化對照表。
數(shù)據(jù)類型 VB6.0 VB.NET
Integer 16 bit size 32 bit size
Long 32 bit size 64 bit size
Currency 用于存儲(chǔ)大浮點(diǎn)數(shù) 被decimal替代,支持更高精度
Variant 可以存儲(chǔ)任意類型數(shù)據(jù) 被Object類型替代,也可以存儲(chǔ)任意類型數(shù)據(jù),但結(jié)果更好
Date Date類型被存儲(chǔ)為double 引入DateTime類型,用于存儲(chǔ)不同格式的日期
在VB.NET中,Short數(shù)據(jù)類型是16 bit的。Short,Integer和Long都等同于CLR的System.Int16、System.Int32和System.Int64類型。 變量聲明的變化在VB6.0中,變量聲明有許多限制。其中之一就是不能同行聲明多個(gè)變量。如果一定要在一行中聲明多個(gè)變量,就一定得指明每個(gè)變量的類型,否則將被默認(rèn)為Variant類型。
Dim a1, a2 As Integer Dim a3 As Integer, a4 As Integer 第一行中的a1是Variant類型,a2是Integer類型。第二行中兩個(gè)變量都是Integer類型。VB.NET支持同行聲明多個(gè)變量,舉例如下:
Dim a1, a2, a3 As Integer 變量初始化是另一個(gè)問題。在VB6.0中不能同時(shí)聲明和初始化變量,而VB.NET則支持這個(gè)特性。
Dim name As String = "Mahesh"System.Console.Write(name) 聲明常量也可以照此辦理:Const DT_COUNT As Integer = 23 New關(guān)鍵字。在VB.NET中,New關(guān)鍵字用于創(chuàng)建對象。由于數(shù)據(jù)類型是對象,所以New關(guān)鍵字用以創(chuàng)建一個(gè)數(shù)據(jù)類型對象。
Dim i As Integer = New Integer()i = 10System.Console.WriteLine(i.ToString()) 代碼塊級(jí)別支持。像C++一樣,VB.NET支持代碼塊級(jí)別的作用域檢查。在語句塊中聲明的變量只在塊內(nèi)有效。
For i = 1 To 10Dim p As LongSystem.Console.WriteLine(i.ToString())NextSystem.Console.WriteLine(p.ToString()) 這段代碼在VB.NET中會(huì)得到一個(gè)編譯錯(cuò)誤,因?yàn)閜在For..Next語句塊之外不可訪問。在VB6.0中這段代碼可以通過。
改進(jìn)了的類型安全
在VB6.0中,當(dāng)你聲明一個(gè)對外部過程的引用時(shí),可以指定任意類型的參數(shù)為As Any。Any關(guān)鍵字禁止了類型檢查,允許任意數(shù)據(jù)類型傳入和返回。
VB.NET不支持Any關(guān)鍵字。你必須指定每個(gè)參數(shù)和返回值的數(shù)據(jù)類型。數(shù)組VB.NET對數(shù)組作了明顯的改動(dòng)。
數(shù)組范圍。在VB.NET中,你需要格外留意數(shù)組范圍問題。VB6.0默認(rèn)數(shù)組下界為0,故數(shù)組中的元素?cái)?shù)量等與數(shù)組上界值加一。下面的數(shù)組界限從A(0)到A(10),共有11個(gè)元素:
Dim A(10) As Single可以使用Option Base改變下界值為1。在VB.NET中,數(shù)組和C++一樣,下界值為0,不支持Option Base。注意:MSDN文檔指出數(shù)組只能包括與其尺寸相等的元素?cái)?shù)量,例如:Dim A(10) As Integer 只能包括10個(gè)元素(從A(0)到A(9)),但在編譯下面這段代碼時(shí)我發(fā)現(xiàn)它運(yùn)行良好,看起來數(shù)組中容納了11個(gè)元素。
Dim A(10) As Integer A(0) = 12 A(2) = 24 A(10) = 23 System.Console.WriteLine(A(0).ToString()) System.Console.WriteLine(A(10).ToString())System.Console.WriteLine(UBound(A).ToString()) System.Console.WriteLine(LBound(A).ToString()) Lbound和Ubound分別返回 0與10。ReDim和Fixed Array。你可以在VB6.0中指定固定長度的數(shù)組。
Dim ArrWeekDays(0 To 6) As Integer
這里的ArrWeekDays數(shù)組是固定長度的,不能用ReDim語句改變長度。VB.NET不支持固定長度數(shù)組,所以ReDim總是有效。
可以用下面兩種方式聲明數(shù)組: Dim ArrWeekDays(6) As IntegerDim ArrWeekDays() As Integer = {1, 2, 3, 4, 5, 6} ReDim語句。在VB6.0中,ReDim用于初始化動(dòng)態(tài)數(shù)組。在VB.NET中你不能把它當(dāng)作聲明用。ReDim只能用于改變數(shù)組長度,不過不能改變數(shù)組維度。
Variant對陣ObjectVB6.0中的Variant數(shù)據(jù)類型能存儲(chǔ)任意類型變量,VB.NET中Object具備相同能力。
算術(shù)操作符VB.NET支持類似C++的快捷方式。下面的表格顯示了常規(guī)操作與快捷操作的不同之處??旖莘绞揭部捎糜?、/、|、等操作符。
操作符 常規(guī)語法 快捷方式加法 A = A+5 A +=5 減法 A = A – 5 A -+ 5固定長度字符串
在VB6.0中,可以在聲明字符串時(shí)指定其長度。VB.NET不支持固定長度字符串。
布爾操作符VB6.0中的And、Or或是Xor語句是按位操作符。而在VB.NET中,它們是布爾操作符。執(zhí)行這些操作將返回true或false。VB.NET引入新操作符來完成按位操作。
操作符 描述 BitAnd 按位AndBitOr 按位OrBitXor 按位XorBitNot 按位Not結(jié)構(gòu)與自定義類型在VB6.0中,你使用Type…End Type語句塊創(chuàng)建結(jié)構(gòu)或自定義類型。例如:
Type StdRec
StdId As Integer
StdName As String End Type
VB.NET引入新的語法:Structure。Type…End Type不再被支持。Structure…End Structure與C++用法相同??梢灾付ńY(jié)構(gòu)中每個(gè)元素的可訪問域,如Public、Protected、Friend、Protected Friend、Private等。例如:
Structure StdRec
Public StdId As Integer Public StdName As String
Private StdInternal As String End StructureVB.NET中的Structures就像類一樣,也可以擁有方法和屬性。New和Nothing關(guān)鍵字VB6.0中,AS New和Nothing關(guān)鍵字用于聲明一個(gè)對象并初始化它。 VB.NET不支持隱式創(chuàng)建對象。如前所言,甚至連數(shù)據(jù)類型都是對象。你可以采用以下兩種方法創(chuàng)建數(shù)據(jù)類型或?qū)ο螅?Dim i As Integer Dim i As Integer = New Integer() // Do something if i = Nothing Then End If 不支持Set語句VB6.0使用Set語句指派對象。例如:Set myObj = new MyObjectSet a = b在VB.NET中,不需要使用Set指派對象。例如:myObj = new MyObj()a = b過程(procedure)語法的變化在VB.NET中過程語法有了很多變化。例如類似C++的過程調(diào)用方式、ByVal(傳值)為默認(rèn)類型、Optional關(guān)鍵字、return語句等等。類似C++的過程調(diào)用方式 VB6.0允許不用加圓括號(hào)調(diào)用過程(sub)。不過,用Call語句調(diào)用函數(shù)或sub時(shí),一定要使用圓括號(hào)。例如:Dim I as IntegerCall EvaluateData(2, i) EvaluateData 2, i 在VB.NET中,所有的方法調(diào)用都需要圓括號(hào),而Call語句則是可選的。 ByVal是默認(rèn)參數(shù)類型在VB6.0中,在調(diào)用函數(shù)或sub時(shí)ByRef(傳址)是默認(rèn)類型。那意味著所有改變將反映到傳入的變量。VB.NET改變了這種方式?,F(xiàn)在,默認(rèn)的參數(shù)類型是ByVal(傳值)。 Optional關(guān)鍵字VB6.0使用Optional關(guān)鍵字可用來讓用戶決定傳入一個(gè)默認(rèn)值,之后在調(diào)用IsMissing函數(shù)判斷參數(shù)是否有效。 而在VB.NET中,每個(gè)可選參數(shù)必須聲明其默認(rèn)值,無需調(diào)用IsMissing函數(shù)。例如:Sub MyMethod(Optional ByVal i As Integer = 3)
Return語句VB.NET的Return語句與C++相似。使用Return語句把控制權(quán)從過程返還給調(diào)用者。在VB6.0中,Return語句與GoSub語句一起使用。VB.NET不再支持GoSub語句。流程控制的改變下面是VB.NET對流程控制語句的修改:1. GoSub不再受到支持。2. Call、Function和Sub語句均可用于調(diào)用過程。3. On ... GoSub和On ... GoTo語句不再受支持??梢允褂肧elect Case語句來替代。4. While ... Wend語句現(xiàn)在改為While…End While語句。不再支持Wend關(guān)鍵字。小結(jié) Visual Basic .NET是.NET版本的Visual Basic,已經(jīng)從根本發(fā)生了變化!通過本文你了解到VB6.0和VB.NET的區(qū)別是很大的,可以說根本就是兩種不同的語言,因?yàn)樗鼈兊膬?nèi)核發(fā)生了變化,VB6.0是基于COM而vb.net是基于.net框架的,因?yàn)檫@個(gè)變化,所以在構(gòu)造類時(shí)也發(fā)生了根本性的變化。
您好,在Visual Basic.NET中,是沒有像這樣的文件I/O操作的,一般都是通過System.IO.StreamReader和System.IO.StreamWriter類,System.IO.BinaryReader和System.IO.BinaryWriter類來讀寫文件以及利用My.Computer.FileSystem類讀寫文件,利用System.IO.Filestream類來創(chuàng)建文件,通過引用Microsoft Scripting Runtime來執(zhí)行文件(夾)和驅(qū)動(dòng)器的特殊操作,常用的是System.IO.StreamReader和System.IO.StreamWriter類。
例如說要讀取一個(gè)文件,我們可以利用System.IO.StreamReader類編寫一個(gè)方法(也就是函數(shù)),但是首先要在當(dāng)前類的開頭添加一個(gè)引用,引用名稱:System.IO,添加引用的代碼如下
Imports System.IO
添加引用之后,就在當(dāng)前類的內(nèi)部創(chuàng)建方法:
Private Function ReadFile(ByVal FileURL As String) As String
Dim sr As StreamReader = New StreamReader(FileURL)
ReadFile = sr.ReadToEnd()
sr.Close()
sr = Nothing
End Function
示例說明:
該方法是一個(gè)返回String(字符串)數(shù)據(jù)的函數(shù),F(xiàn)ileURL作為參數(shù)是用來存放需要訪問的文件的URL,當(dāng)然,要獲取一個(gè)文件的URL,就是利用這一句代碼實(shí)現(xiàn)的:
Dim sr As StreamReader = New StreamReader(FileURL)
當(dāng)獲取了URL之后,就要對文件進(jìn)行讀取操作了,然后將讀取的結(jié)果返回給方法:
ReadFile = sr.ReadToEnd()
讀取文件完畢之后,要對文件執(zhí)行關(guān)閉操作:
sr.Close()
當(dāng)然別忘了清理資源:
sr = Nothing
StreamReader類可以從流或文件中讀取字符,在創(chuàng)建StreamREader類的對象時(shí),可以指定一個(gè)流對象,也可以指定一個(gè)文件URL,創(chuàng)建對象后就可以調(diào)用他的方法,從流中讀取數(shù)據(jù),其常用方法如下:
Peek:返回下一個(gè)可用字符,但不使用它。
Read:讀取輸入流中下一個(gè)字符或一組字符并移動(dòng)流或文件指針。
ReadBlock:從當(dāng)前流中讀取最大數(shù)量字符并從index開始將數(shù)據(jù)寫入buffer。
ReadLine:從當(dāng)前流中讀取一行字符并將字符作為String返回。
REadToEnd:從流的當(dāng)前位置到末尾讀取流。
Close:關(guān)閉打開的對象,釋放資源。
注:流,一種新的數(shù)據(jù)格式,這種格式可通過System.IO命名空間下的類訪問。流用Stream類表示,所有的流都是從這個(gè)類中繼承的。流向用戶提供了一個(gè)一般的數(shù)據(jù)視圖,隱藏了操作系統(tǒng)和底層設(shè)備的實(shí)現(xiàn)細(xì)節(jié),所有的流都支持讀寫操作。在打開文件時(shí)將返回對應(yīng)的流對象,用戶可以對流對象進(jìn)行讀寫操作。
如果要對文件執(zhí)行按行讀取操作,這時(shí)就會(huì)用到枚舉,這時(shí)候,代碼就要更改一下了:
Private Function ReadFile(ByVal FileURL As String) As String
Dim sr As StreamReader = New StreamReader(FileURL)
For Each fLine As String In sr.ReadToEnd()
Line = sr.ReadLine()
ReadFile = ReadFile fLine
Next sr.ReadLine
sr.Close()
End Function
示例說明:
For Each…Next:派生于For…Next循環(huán),用于枚舉一系列對象中的成員,而這些對象組成集合,如果集合中至少存在一個(gè)元素,程序就會(huì)靜茹For Each塊執(zhí)行。其格式如下:
For Each 元素 [As 數(shù)據(jù)類型] In 元素集合
[循環(huán)體]
[Exit For]
[循環(huán)體]
Next [元素]
比如:
Dim CountNumber As ULong = 0
Dim FolderName() As String = New String() {" "}
For Each strFolder As String In My.Computer.FileSystem.GetDirectories("C:\")
CountNumber = CountNumber + 1
ReDim Preserve FolderName(1 To CountNumber)
FolderName = strFolder
Next strFolder
注:My.Computer.FileSystem.GetDirectories:主要用來枚舉指定目錄的子文件夾。
Preserve:主要用來避免重定義數(shù)組而不損失數(shù)組元素的原有數(shù)據(jù)。
另外,利用My.Computer.FileSystem也可以實(shí)現(xiàn)文件的讀取,其代碼如下:
Dim fpReader As String = My.Computer.FileSystem.ReadAllText("C:\test.txt")
示例說明:
定義一個(gè)字符串變量利用My.Computer.FileSystem.ReadAllText來實(shí)現(xiàn)對“C:\test.txt”的讀取。
如果是已經(jīng)編碼的文本,則可以使用My.Computer.FileSystem對象中的ReadAllText方法并提供路徑和文件編碼類型,將文本寫入字符串變量中,例如:
Dim fpReader As String = My.Computer.FileSystem.ReadAllText("C:\test.txt", _
System.Text.Encoding.UTF32)
當(dāng)然,System.Text.Encoding的成員不止一個(gè),它還有如下成員:
System.Text.Encoding.UTF8
System.Text.Encoding.UTF16
System.Text.Encoding.ASCII
System.Text.Encoding.Unicode
這些是常見的成員,也是主要的成員。
另外,利用My.Computer.Filesystem類無法實(shí)現(xiàn)文件的行操作,還有,如果您的計(jì)算機(jī)未安裝完整的Microsoft.NET Framework Runtime,則無法實(shí)現(xiàn)這種操作!
寫入文件的操作同樣簡單,Visual Basic.NET 允許用戶使用StreamWriter來對文件寫入內(nèi)容,下面就讓我們來創(chuàng)建一個(gè)子例程,來實(shí)現(xiàn)文件的寫入:
Private Sub WriterFile(ByVal FileURL As String, ByVal FileCon As String)
Dim sr As StreamWriter = New StreamWriter(FileURL)
sr.Write(FileCon)
sr.Close()
sr = Nothing
End Sub
示例說明:
sr.Write(FileCon):將FileCon寫入文件FileURL之中。
另外,StreamWriter常用方法如下:
WriteLine:向流中寫入一行,后面跟結(jié)束符。
Write:寫入流,向流對象中寫入字符并移動(dòng)流或文件指針。
Close:關(guān)閉打開的對象,釋放資源。
附:Visual Basic 6.0文件操作解說:
打開: Open 文件名 For Input | Output | Append As [#]文件號(hào)
Input打開讀入,文件不存在報(bào)錯(cuò)。Output打開覆蓋寫入,文件不存在則創(chuàng)建。Append打 開追加寫入,文件不存在則創(chuàng)建。
讀: Line Input #文件號(hào), 字符串變量
讀一行數(shù)據(jù)存入字符串變量,數(shù)據(jù)包括空格、Tab、等,不包括回車符和換行符,所以要顯示文件的換行效果,要手動(dòng)添加回車符和換行符(vbCrLf)
Input #文件號(hào), 變量1[, | ;] [變量2]...
這種方式可以存入多個(gè)變量,而且變量類型不限于字符串型。
寫: Print #文件號(hào), 參數(shù)1[, | ;] [參數(shù)2]...
將各參數(shù)逐個(gè)寫入文件。參數(shù)間用逗號(hào)隔開時(shí),文件中相應(yīng)插入多個(gè)空格;用分號(hào)隔開時(shí),插入一個(gè)空格??梢杂肧pc(n)、Tab(n)等進(jìn)行排版。
Write #文件號(hào), 參數(shù)1[, | ;] [參數(shù)2]...
這種寫入方式將自動(dòng)添加界定符,對不同參數(shù)的類型加以界定。
Visual Basic 6.0文件操作函數(shù):
Seek: Seek(文件號(hào))
返回文件正在訪問的位置,返回值為長整型。對順序文件和二進(jìn)制文件,返回值以字節(jié)為單位;對隨機(jī)訪問文件,返回值以記錄號(hào)為單位。
Seek: Seek [#]文件號(hào),位置
定位文件到指定位置。位置單位同上所述。
Input: Input (字節(jié)數(shù),[#]文件號(hào))
從文件的訪問當(dāng)前位置讀入指定字節(jié)數(shù)的數(shù)據(jù)。僅適用于順序文件和二進(jìn)制文件。
EOF: EOF(文件號(hào))
判斷文件的訪問位置是否在文件尾,如果是,返回True,否則,返回False。
LOF: LOF(文件號(hào))
返回文件長度,單位為字節(jié)。
FileLen: FileLen (文件名)
返回文件名對應(yīng)文件的長度,單位是字節(jié)。該函數(shù)取磁盤文件標(biāo)識(shí)中的長度,即文件打開前的長度,可以取未打開的文件長度。
GetAttr: GetAttr (Pathname)
返回指定文件或文件夾的屬性。
FileAttr: FileAttr (文件號(hào))
返回文件號(hào)對應(yīng)文件的打開方式。
GetDateTime: GetDateTime (Pathname)
返回文件被創(chuàng)建或修改的最后日期和時(shí)間。
Free: FreeFile[(0|1)]
返回未被占用的文件號(hào),F(xiàn)ree或Free(0)返回1~255之間未占用的文件號(hào),F(xiàn)ree(1)返回256~511之間未占用的文件。
Dir: Dir (Pathname [,Attributes])
測試指定路徑是否有某文件,Attributes附加文件屬性條件,取值vbNormal、vbReadOnly、vbHidden、vbSystem、vbVolume、vbDirectory。
Kill: Kill (文件名)
刪除指定文件,文件名可包含路徑。
FileCopy: FileCopy 源文件,目標(biāo)文件
拷貝文件。
Name: Name 舊文件名 As 新文件名
文件重命名。前后路徑不一致時(shí),操作為移動(dòng)文件并重命名。
MkDir: MkDir path
新建文件夾。
RmDir: Rmdir path
刪除文件夾。
ChDrive: ChDrive Drive
改變當(dāng)前驅(qū)動(dòng)器 ChDrive "D"
CurDir: CurDir [(driver)]
返回當(dāng)前工作路徑,指定driver則返回目標(biāo)驅(qū)動(dòng)器的當(dāng)前工作路徑。
舉例:
'新建文件,并寫入數(shù)據(jù),關(guān)閉
Open "a.txt" For Output As #1
Print #1, "ABCDEFG"; vbCrLf; "HIJK"
Close #1
'打開文件,并全部寫入新文件,關(guān)閉
Open "a.txt" For Input As #2
Open "b.txt" For Output As #3
Dim str As String
While (Not EOF(2))
Line Input #2, str
Print #3, str
Wend
Close
注:關(guān)于Visual Basic 6.0的文件操作資料來自于
如果您覺得我的回答幫助了您解決難題,別忘了采納哦,如果我的回答未能解決您的問題,您可以在互聯(lián)網(wǎng)上尋找更多的解決方案!