泛型参数,表示一种特定类型,通常用于集合List, Dictionary之类的。
网站设计、做网站,成都做网站公司-成都创新互联公司已向上千家企业提供了,网站设计,网站制作,网络营销等服务!设计与技术结合,多年网站推广经验,合理的价格为您打造企业品质网站。
原型:Dictionary(Of TKey, TValue)
原型不能直接使用,必须给TKey, TValue指定一个类型(Type)
强类型字典:Dictionary(Of String, String)
表示键和值都为String类型的字典。
Public Class Form1
Inherits System.Windows.Forms.Form
Public filename As String = "英汉词典.txt"
Public myword(6500, 1) As String
Public words As Integer = 0
Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
Dim a As String
Dim b As Integer
Dim i As Integer = 0
Dim n As String
Dim m As String
Dim stringb As Integer
TextBox1.Text = ""
TextBox2.Text = ""
FileOpen(1, "英汉词典.txt", OpenMode.Input)
Do While Not EOF(1)
a = LineInput(1)
b = InStr(a, " ")
n = Microsoft.VisualBasic.Left(a, b - 1)
myword(i, 0) = n
ListBox1.Items.Add(n)
stringb = Len(a) - b
m = Trim(Microsoft.VisualBasic.Right(a, stringb))
myword(i, 1) = m
i += 1
Loop
words = i
FileClose(1)
End Sub
Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
Dim i As Integer = -1
If TextBox1.Text = "" Then
MessageBox.Show("不能输入空格,请重新输入")
TextBox2.Text = ""
TextBox1.Focus()
Exit Sub
Else
For i = i + 1 To words
If LCase(TextBox1.Text) = LCase(myword(i, 0)) Then
TextBox2.Text = Trim(myword(i, 1))
Exit Sub
End If
Next
MessageBox.Show(" 您需要的单词不存在,请重新输入")
End If
End Sub
Private Sub ListBox1_SelectedIndexChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles ListBox1.SelectedIndexChanged
Try
TextBox1.Text = myword(ListBox1.SelectedIndex, 0)
TextBox2.Text = Trim(myword(ListBox1.SelectedIndex, 1))
Catch ex As Exception
End Try
Exit Sub
End Sub
Private Sub Button3_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button3.Click
Dim ch, enterwords As String
Dim j, m As Integer
If -1 = ListBox1.SelectedIndex Then
MsgBox("请选择单词", , "")
ListBox1.Focus()
Exit Sub
End If
enterwords = InputBox("请修改单词", "修改单词", Trim(myword(ListBox1.SelectedIndex, 0)))
Do While enterwords = ""
m = MsgBox("单词不能为空", MsgBoxStyle.RetryCancel, "修改单词")
If m = 4 Then
enterwords = InputBox("请修改单词", "修改单词", Trim(myword(ListBox1.SelectedIndex, 0)))
Else
Exit Sub
End If
Loop
ch = InputBox("请修改中文意思", "修改单词", Trim(myword(ListBox1.SelectedIndex, 1)))
Do While ch = ""
m = MsgBox("中文意思不能为空", MsgBoxStyle.RetryCancel, "修改单词")
If m = 4 Then
ch = InputBox("请修改中文意思", "修改单词", Trim(myword(ListBox1.SelectedIndex, 1)))
Else
Exit Sub
End If
Loop
myword(ListBox1.SelectedIndex, 1) = ch
myword(ListBox1.SelectedIndex, 0) = enterwords
FileOpen(1, filename, OpenMode.Output)
For j = 0 To words - 1
PrintLine(1, myword(j, 0) " " myword(j, 1))
Next
FileClose(1)
MsgBox("修改成功")
ListBox1.Items.Clear()
Form1_Load(sender, e)
End Sub
Private Sub Button2_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button2.Click
Dim i As Integer = 0
Dim k, m As Integer
Dim enterwords, ch As String
enterwords = InputBox("请输入要添加的单词", "添加单词")
Do While enterwords = ""
m = MsgBox("单词不能为空,请输入单词!", MessageBoxButtons.RetryCancel, "添加单词")
If m = 4 Then
enterwords = InputBox("请输入要添加的单词", "添加单词")
Else
Exit Sub
End If
Loop
ch = InputBox("请输入中文意思", "添加中文")
Do While ch = ""
m = MsgBox("中文不能为空,请输入中文意思!", MessageBoxButtons.RetryCancel, "添加中文")
If m = 4 Then
ch = InputBox("请输入中文意思", "添加中文")
Else
Exit Sub
End If
Loop
Do While LCase(myword(i, 0)) LCase(enterwords)
i = i + 1
If words = i Then
myword(i, 0) = enterwords
myword(i, 1) = ch
words = words + 1
FileOpen(1, filename, OpenMode.Output)
For i = 0 To words - 1
PrintLine(1, myword(i, 0) " " myword(i, 1))
Next
ListBox1.Items.Clear()
FileClose(1)
ListBox1.Items.Clear()
Form1_Load(sender, e)
MessageBox.Show("添加成功")
Exit Sub
End If
Loop
If LCase(myword(i, 0)) = LCase(enterwords) Then
MessageBox.Show("该单词已存在!")
ListBox1.SelectedIndex = i
Exit Sub
ElseIf LCase(myword(0, 0)) LCase(enterwords) Then
For k = words To 0 Step -1
myword(k + 1, 0) = myword(k, 0)
myword(k + 1, 1) = myword(k, 1)
Next
myword(0, 0) = enterwords
myword(0, 1) = ch
words = words + 1
FileOpen(1, filename, OpenMode.Output)
For i = 0 To words - 1
PrintLine(1, myword(i, 0) " " myword(i, 1))
Next
ListBox1.Items.Clear()
FileClose(1)
Form1_Load(sender, e)
MessageBox.Show("添加成功")
Exit Sub
End If
For k = words To i + 1 Step -1
myword(k + 1, 0) = myword(k, 0)
myword(k + 1, 1) = myword(k, 1)
Next k
myword(i, 0) = enterwords
myword(i, 1) = ch
words = words + 1
FileOpen(1, filename, OpenMode.Output)
For i = 0 To words - 1
PrintLine(1, myword(i, 0) " " myword(i, 1))
Next
FileClose(1)
ListBox1.Items.Clear()
Form1_Load(sender, e)
MessageBox.Show("添加成功")
Exit Sub
End Sub
Private Sub Button4_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button4.Click
Dim i, j, k As Integer
If -1 = ListBox1.SelectedIndex Then
MsgBox("请选择单词", , "")
ListBox1.Focus()
Exit Sub
End If
k = MsgBox("确定是否删除", MsgBoxStyle.YesNo, "提示")
If k = 6 Then
For i = ListBox1.SelectedIndex To words
myword(i, 0) = myword(i + 1, 0)
myword(i, 1) = myword(i + 1, 1)
Next
words = words - 1
FileOpen(1, filename, OpenMode.Output)
For j = 0 To words - 1
PrintLine(1, myword(j, 0) " " myword(j, 1))
Next
FileClose(1)
MsgBox("单词已删除")
ListBox1.Items.RemoveAt(ListBox1.SelectedIndex)
ListBox1.Refresh()
TextBox1.Text = ""
TextBox2.Text = ""
Exit Sub
Else
Exit Sub
End If
End Sub
Private Sub Button5_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button5.Click
TextBox1.Text = ""
TextBox2.Text = ""
End Sub
End Class
这是代码,文字性的内容自己去做。
创建字典的两个方法
1 引用 c:\windows\system32\scrrun.dll 然后 dim d as new Dictionary
2 Set d = CreateObject("Scripting.Dictionary")
字典的四个属性
CompareMode 决定key的比较方法 BinaryCompare(默认方法) 二进制方式比较,即a,A是不同字符
TextCompare '文本方式比较,即a,A是相同字符
vbDatabaseCompare 仅用于 Microsoft Access。进行基于您自己数据库中信息的比较。
如果用recordset做key的话vbDatabaseCompare方式就有用了,因为用的少没有测试过
Count 计算字典中的条目数量 s = d.count s 是一个long值
Key 也就是Item的代码通常是整数或字符串,可以是除数组外的任何类型,在一个字典中每一个key都是唯一的
一般利用这个特点去除重复值
Item 可以是任何对象(不含自定义数据):数字,字符串,数组,对象(窗体,控件,文件。。。。)
字典的六个方法
Add 向字典添加内容 d.add "a",10000,或 d("王先生")= "010-87654321"
向字典添加对象 set d("mysheet") = Sheet1 Set d("mybook") = ThisWorkbook
注意 set 关键字
Exists 判断keys中有没有要找的key,返回 true 或 false
s = d.exists("王先生"), s 是 true 因为上面已经添加了王先生
Keys 学过英文吧?Key的复数形式,返回一个一维数组 arr= d.keys
Items 同上 arr = d.items
Remove 按照key从字典中删除一个项目 d.remove("王先生")
RemoveAll 清空字典 d.RemoveAll 此时 d.count 为 0字典简单,好学又好用 总共10种属性方法.
描述
在一个 Dictionary 对象中设置一个 key。
语法
object.Key(key) = newkey
Key 属性具有下列部分:
部分 描述
object 必需的。总是一个 Dictionary 对象的名字。
key 必需的。被更改的 Key值。
newkey 必需的。替换指定 key 的新值。
说明
如果在更改某个 key 时,没有找到 key,则会出现运行时错误。
Item 属性
描述
对 Dictionary 对象中指定的 Key,设置或返回一个 Item 。对于集合来说,基于指定的 Key ,返回一个 Item 。读/写属性。
语法
object.Item(key) [= newitem]
Item 属性具有下列部分:
部分 描述
object 必需的。总是一个集合或 Dictionary 对象的名称。
key 必需的。与被检索或添加的条目相关联的 Key 。
newitem 可选的。仅用于 Dictionary 对象;没有用于集合的应用程序。如果提供的话,newitem 是与指定的 Key 相关联的新值。
说明
如果在改变某个 item 时,没有找到 key,则用指定的newitem创建一个新的 key 。如果在试图返回某个已存在条目时,没有找到 key,则创建一个新 key,且其相应的条目为空。
Count 属性
描述
返回集合或 Dictionary 对象中的条目数。只读。
语法
object.Count
object 总是“应用于”列表中某一项的名称。
说明
下面的代码举例说明了 Count 属性的使用方法:
Dim a, d, i '创建一些变量
Set d = CreateObject("Scripting.Dictionary")
d.Add "a", "Athens" '添加一些关键字和条目。
d.Add "b", "Belgrade"
d.Add "c", "Cairo"
a = d.Keys '获得关键字
For i = 0 To d.Count -1 '遍及数组
Print a(i) '打印关键字
Next
...
CompareMode 属性
描述
设置或返回某个 Dictionary 对象中的比较字符串关键字的比较模式。
语法
object.CompareMode[ = compare]
CompareMode 属性具有下列部分:
部分 描述
object 必需的。总是一个 Dictionary 对象的名称。
compare 可选的。如果提供的话,compare 是一个代表比较模式的值,该比较模式用于象 StrComp 这样的函数。
设置
compare 参数可以具有下列值:
常数 值 描述
VbUseCompareOption –1 使用 Option Compare 语句的设置值进行比较。
vbBinaryCompare 0 进行二进制比较。
vbTextCompare 1 进行文字比较。
vbDatabaseCompare 2 仅用于 Microsoft Access。进行基于您自己数据库中信息的比较。
说明
如果试图对已经包含数据的 Dictionary 对象的比较模式进行更改的话,就会出错。
CompareMode 属性所用的参数值与 StrComp 函数所用的 compare 参数相同。可以用大于 2 的值表示使用特定 Locale IDs (LCID) 的比较。
Dim result As New Dictionary(Of Byte, Byte())() From { _
1, _
New Byte() {Hff, H0, H0} _
}
可以先用字典法得到不重复值的数组:
Set d=CreateObject(“Scripting.Dictionary”)
For i =1 to Cells(rows.count,1).end(3).row
d(cells(i ,1).value)=“”
Next
y=d.keys
再赋值给控件
1. 什么是类和对象?
答:类包含某一类对象的数据和过程。对象是类的实例。
2. 为什么采用类和对象进行程序设计?
答:以便按照对象定义类,提高程序代码的可重用性,避免重复劳动。
3. 在同一个类中,应当包括哪些对象的属性和方法?
答:同一类对象的数据和过程。
4. VB程序设计主要包括哪两个方面的内容?
答:Windows应用程序界面和代码。
5. 什么是事件驱动?
答:根据事件转去执行相应的事件处理过程。
1. 控件是窗体上的 对象 。
2. Visual Basic具有 BASIC程序语言简单易学的 优点,新增了 可视化和面向面向对象程序设计的 热点,是 Windows编程人员广泛使用的编程 工具。
3. 对象的 属性 是在其类中定义的数据。
4. 对象的 方法 是在其类中定义的过程。
5. 对象本身的动作或功能称为 方法 ,外界施加于某对象的动作或操作称为 事件 。
1.面向过程
是指从功能的角度分析问题,将待解决的问题空间分解成若干个功能模块,每个功能模块描述一个操作的具体过程。
2.面向过程程序设计
主要是根据事务本身的逻辑过程进行编程的一种方法。
3.面向对象程序设计
是一种计算机编程架构,是由单个能够起到子程序作用的单元或对象组合而成。即按照对象编写程序。
4.事件驱动程序设计
是一种电脑程式设计模型。这种模型的程式执行流程是由使用者的动作或者是由其他程式的讯息来决定的。
5.函数
是一种特定的运算,在程序中使用一个函数时,只要给出函数名并给出一个或多个参数,就能得到它的函数值
6.过程
是程序中可以执行的一段代码,过程包含在一个声明语句和一个结束语句之间
7.类
是所有具有共同特征的事物的抽象,是一个抽象的概念(类是一组具有相同属性特征的对象的抽象描述,是面向对象程序设计的又一个核心概念或者类是对一组对象共同具有的属性和行为的抽象,具有封装和隐藏性、还具有继承性)。
8.对象
是一个属性集合及其操作的封装体(对象是用来描述现实世界中客体的部件,是面向对象软件系统在运行时刻的基本单位)。
类是对象的抽象,对象是类的实例。
9.事件
窗体或控件识别的动作
10.事件驱动
根据事件转去执行相应的事件处理过程。
11.属性
是一个对象的特性,不同的对象有不同的属性
12.算法
指解决某个问题的严格方法,描述有始有终的计算过程。
5.属性窗口中属性值被设置的方式有哪几种?
6种:输入 选取 浏览 赋值 默认 拖动
1.程序代码是由一行一行的 语句 所组成。
3.在程序代码中可将一个语句分成两段的特殊符号为( _ )。
5.数值变量如果没有设置初值,则内定值为 0 。
7.如果有一个变量,可能会存放数值数据或字符串数据,此时可以声明该变量为 对象变量。
9. Integer数据类型占 4 bytes的内存空间,可以表示的数值范围为 -2,147,483,648~2,147,483,647 的整数
3.VB.NET程序语言数据类型的种类有哪些?
(1)数值型
①整形数:短整形(Short)、整形(Integer)、长整型(Long)
②字节型(Byte)
③实型数:单精度型(Single)、双精度型(Double)
④货币型(Decimal)
(2)字符型(Char)和字符串型(String)
(3)逻辑型/布尔型(Boolean)
(4)日期型(Date)
(5)对象型(Object)[即可变型(Variant)]
1.局部变量、全局变量、跨模块变量分别在何处声明?其生存期分别是多少?
局部变量在程序内声明。生存期为从所在的程序运行开始到程序结束。
全局变量在窗体内所有程序的外边声明。生存期为由该变量声明开始,一直到程序退出运行为止。
跨模块变量在一般模块的声明区用Public来声明。生存期为从一个Windows应用程序项目文件开始运行到结束。
3.什么是静态变量?
静态变量是在离开程序时能够继续保留目前的值,待下回进入该程序时能够继续保留的变量值的局部变量,用Static关键字声明。
(一)问答题
1.请简单说明在程序中使用程序的好处。
(1)程序可以重复使用,以方便维护与程序调试。
(2)程序可以让其他工程或项目使用。
(3)程序的逻辑简单、明确,可以让程序变得简单且可读性高。
(4)程序具有模块化的功能,因此可以将一个大的应用程序分成数个小的且不同功能的程序,让不同的程序设计师分别编写独立不同功能的程序,并以团队开发,加快应用程序开发的时间。
3.试比较传值调用与传址调用的差异。
(1)声明方式不同:
传值——在程序中的虚自变量之前加上ByVal
传址——在程序中的虚自变量之前加上ByRef
(2)占用内存不同
传值——调用程序的实自变量与被调用程序的虚自变量占用不同内存
传址——调用程序的实自变量与被调用程序的虚自变量占用同一地址的内存,也就是说,在做参数传递时,调用程序中的实自变量是将自己本身的内存地址传给被调用程序的虚自变量
(3)虚自变量更改结果不同
传值——使用传值调用可以防止变量被程序修改
传址——被调用程序可以通过虚自变量将值传回给调用程序
5.什么是程序多载?
程序多载是使用不同的自变量串行或数据类型来加以区分相同名称的程序。