任何一門語(yǔ)言都提供了豐富的操作符,vb也不例外。操作符一般分為:算術(shù)運(yùn)算符,賦值運(yùn)算符,比較運(yùn)算符,邏輯運(yùn)算符,其它。本文只以幾個(gè)小例子來(lái)介紹其中一些比較重要的應(yīng)用。
在本文中將會(huì)用到一個(gè)自定義類 dog ,代碼如下:
Public Class dogClass dog
Private s_name As String
Private s_color As Color
Private s_age As Integer
Public Sub New()Sub New()
s_name = "塞北的雪"
s_age = 22
s_color = System.Drawing.Color.Red
End Sub
Public Property Name()Property Name() As String
Get
Return s_name
End Get
Set(ByVal value As String)
s_name = value
End Set
End Property
Public Property Color()Property Color() As Color
Get
Return s_color
End Get
Set(ByVal value As Color)
s_color = value
End Set
End Property
Public Property Age()Property Age() As Integer
Get
Return s_age
End Get
Set(ByVal value As Integer)
s_age = value
End Set
End Property
Public Shared Operator +(ByVal a As dog, ByVal b As dog)
Dim c As New dog
c.Name = a.Name + b.Name
c.Age = a.Age + b.Age
c.Color = Color.FromArgb((a.Color.ToArgb + b.Color.ToArgb) / 2)
Return c
End Operator
End Class
1,Is 運(yùn)算符
Is運(yùn)算符比較兩個(gè)引用對(duì)象是否引用了同一實(shí)例。 例子如下:
Dim a As New dog
Dim b As New dog()
If a Is b Then
MsgBox("True")
Else
MsgBox("False")
End If
b = a
b.Name = "NorthSnow"
If a Is b Then
MsgBox("True")
Else
MsgBox("false")
End If
’false
’true
2,操作符重載
我們可以根據(jù)需要對(duì)操作符進(jìn)行重載,本文中的 dog 類 就 對(duì) + 操作符 進(jìn)行了重載 操作。此時(shí)對(duì)兩個(gè)dog 類進(jìn)行相加時(shí),會(huì)返回一個(gè)dog 類實(shí)例 ,他的 Name 是 那兩個(gè) dog 實(shí)例的 名字相加,年齡也是 dog 實(shí)例的年齡之和,顏色是兩個(gè)顏色的平均值。例子如下:
Dim sb As New System.Text.StringBuilder
Dim m As New dog
Dim n As New dog
Dim c As dog
m.Name = "NorthSnow"
c = m + n
sb.AppendLine()
sb.Append(m.Name)
sb.Append("--")
sb.Append(m.Age)
sb.Append("--")
sb.Append(m.Color.ToArgb)
sb.AppendLine()
sb.Append(n.Name)
sb.Append("--")
sb.Append(n.Age)
sb.Append("--")
sb.Append(n.Color.ToArgb)
sb.AppendLine()
sb.Append(c.Name)
sb.Append("--")
sb.Append(c.Age)
sb.Append("--")
sb.Append(c.Color.ToArgb)
MsgBox(sb.ToString)
’NorthSnow--22---65536
’塞北的雪--22---65536
’NorthSnow塞北的雪--44---65536 3,like操作符
like 操作符用于判斷一個(gè)字符串與另外一個(gè)字符串是否匹配,大小寫(xiě)敏感。語(yǔ)法是:
Result=String like Pattern
例子如下:
Dim a As String = "Northsnow,塞北的雪"
Dim b As String = "Northsnow,塞北的雪"
If a Like b Then
MsgBox("true")
Else
MsgBox("false")
End If
b = "northsnow,塞北的雪"
If a Like b Then
MsgBox("true")
Else
MsgBox("false")
End If
’true
’false
另外,Pattern支持通配符。這一點(diǎn)肯定讓我們想起了正則表達(dá)式(Regular Expression)。不過(guò)我們千萬(wàn)不要搞混了,雖然有些地方相近,但是有些通配符與正則表達(dá)式不太一樣,功能也有區(qū)別。like操作符支持的通配符共有5種:
? 表示一個(gè)任意字符(1個(gè))
* 任意個(gè)任意字符(0-n個(gè))
# 表示一個(gè)數(shù)字
[charlist] 表示 charlist 中的任意一個(gè)字符
[!charlist] 表示 不在charlist 中的任意一個(gè)字符
用過(guò)正則的朋友一定會(huì)很容易的理解的,有幾個(gè)核心的規(guī)則一定要記牢,那就是:
(1) * 可以匹配任何字符串
(2) ?可以匹配任何一個(gè)字符
(3) 而# 相當(dāng)于[0-9] 只能匹配一個(gè)數(shù)字 如果要匹配兩個(gè)數(shù)字需要寫(xiě)成 ##
(4) 字符列表中的字符可以用-提供一個(gè)區(qū)間,以簡(jiǎn)化書(shū)寫(xiě)。
(5) 大小寫(xiě)敏感
下面就舉幾個(gè)例子說(shuō)明一下:
Dim a As String = "Northsnow.123"
Dim b As String = "*.###"
MsgBox(a Like b)
’True
a = "Northsnow.123"
b = "[A-Z][a-z]*#"
MsgBox(a Like b)
’True
a = "Northsnow.123"
b = "[A-Z][a-z]*[a-z]"
MsgBox(a Like b)
’False
a = "Northsnow.123"
b = "[A-Z][a-z]*[0-9]"
MsgBox(a Like b)
’True
4,其它的一些特殊操作符
AndAlse ,OrElse 與 and 和 or 差不多,只是他們比 后者更智能,當(dāng)前面的判斷已經(jīng)確定了返回值的時(shí)候,后面的表達(dá)式的值就不再計(jì)算了。
TypeOf 返回當(dāng)前對(duì)象的類型,每一個(gè)類都有一個(gè)getType方法與它很相似,據(jù)一個(gè)小例子如下:
Dim a As New dog
Dim b As New dog
Dim c As Type
c = a.GetType
MsgBox(c.ToString)
If TypeOf (a) Is vb1.Form7.dog Then
MsgBox(True)
End If
’vb1.Form7+dog
’True
就說(shuō)這么多吧。已有在應(yīng)用中如果在總結(jié)出什么好的經(jīng)驗(yàn),再慢慢補(bǔ)充。
在本文中將會(huì)用到一個(gè)自定義類 dog ,代碼如下:
Public Class dogClass dog
Private s_name As String
Private s_color As Color
Private s_age As Integer
Public Sub New()Sub New()
s_name = "塞北的雪"
s_age = 22
s_color = System.Drawing.Color.Red
End Sub
Public Property Name()Property Name() As String
Get
Return s_name
End Get
Set(ByVal value As String)
s_name = value
End Set
End Property
Public Property Color()Property Color() As Color
Get
Return s_color
End Get
Set(ByVal value As Color)
s_color = value
End Set
End Property
Public Property Age()Property Age() As Integer
Get
Return s_age
End Get
Set(ByVal value As Integer)
s_age = value
End Set
End Property
Public Shared Operator +(ByVal a As dog, ByVal b As dog)
Dim c As New dog
c.Name = a.Name + b.Name
c.Age = a.Age + b.Age
c.Color = Color.FromArgb((a.Color.ToArgb + b.Color.ToArgb) / 2)
Return c
End Operator
End Class
1,Is 運(yùn)算符
Is運(yùn)算符比較兩個(gè)引用對(duì)象是否引用了同一實(shí)例。 例子如下:
Dim a As New dog
Dim b As New dog()
If a Is b Then
MsgBox("True")
Else
MsgBox("False")
End If
b = a
b.Name = "NorthSnow"
If a Is b Then
MsgBox("True")
Else
MsgBox("false")
End If
’false
’true
2,操作符重載
我們可以根據(jù)需要對(duì)操作符進(jìn)行重載,本文中的 dog 類 就 對(duì) + 操作符 進(jìn)行了重載 操作。此時(shí)對(duì)兩個(gè)dog 類進(jìn)行相加時(shí),會(huì)返回一個(gè)dog 類實(shí)例 ,他的 Name 是 那兩個(gè) dog 實(shí)例的 名字相加,年齡也是 dog 實(shí)例的年齡之和,顏色是兩個(gè)顏色的平均值。例子如下:
Dim sb As New System.Text.StringBuilder
Dim m As New dog
Dim n As New dog
Dim c As dog
m.Name = "NorthSnow"
c = m + n
sb.AppendLine()
sb.Append(m.Name)
sb.Append("--")
sb.Append(m.Age)
sb.Append("--")
sb.Append(m.Color.ToArgb)
sb.AppendLine()
sb.Append(n.Name)
sb.Append("--")
sb.Append(n.Age)
sb.Append("--")
sb.Append(n.Color.ToArgb)
sb.AppendLine()
sb.Append(c.Name)
sb.Append("--")
sb.Append(c.Age)
sb.Append("--")
sb.Append(c.Color.ToArgb)
MsgBox(sb.ToString)
’NorthSnow--22---65536
’塞北的雪--22---65536
’NorthSnow塞北的雪--44---65536 3,like操作符
like 操作符用于判斷一個(gè)字符串與另外一個(gè)字符串是否匹配,大小寫(xiě)敏感。語(yǔ)法是:
Result=String like Pattern
例子如下:
Dim a As String = "Northsnow,塞北的雪"
Dim b As String = "Northsnow,塞北的雪"
If a Like b Then
MsgBox("true")
Else
MsgBox("false")
End If
b = "northsnow,塞北的雪"
If a Like b Then
MsgBox("true")
Else
MsgBox("false")
End If
’true
’false
另外,Pattern支持通配符。這一點(diǎn)肯定讓我們想起了正則表達(dá)式(Regular Expression)。不過(guò)我們千萬(wàn)不要搞混了,雖然有些地方相近,但是有些通配符與正則表達(dá)式不太一樣,功能也有區(qū)別。like操作符支持的通配符共有5種:
? 表示一個(gè)任意字符(1個(gè))
* 任意個(gè)任意字符(0-n個(gè))
# 表示一個(gè)數(shù)字
[charlist] 表示 charlist 中的任意一個(gè)字符
[!charlist] 表示 不在charlist 中的任意一個(gè)字符
用過(guò)正則的朋友一定會(huì)很容易的理解的,有幾個(gè)核心的規(guī)則一定要記牢,那就是:
(1) * 可以匹配任何字符串
(2) ?可以匹配任何一個(gè)字符
(3) 而# 相當(dāng)于[0-9] 只能匹配一個(gè)數(shù)字 如果要匹配兩個(gè)數(shù)字需要寫(xiě)成 ##
(4) 字符列表中的字符可以用-提供一個(gè)區(qū)間,以簡(jiǎn)化書(shū)寫(xiě)。
(5) 大小寫(xiě)敏感
下面就舉幾個(gè)例子說(shuō)明一下:
Dim a As String = "Northsnow.123"
Dim b As String = "*.###"
MsgBox(a Like b)
’True
a = "Northsnow.123"
b = "[A-Z][a-z]*#"
MsgBox(a Like b)
’True
a = "Northsnow.123"
b = "[A-Z][a-z]*[a-z]"
MsgBox(a Like b)
’False
a = "Northsnow.123"
b = "[A-Z][a-z]*[0-9]"
MsgBox(a Like b)
’True
4,其它的一些特殊操作符
AndAlse ,OrElse 與 and 和 or 差不多,只是他們比 后者更智能,當(dāng)前面的判斷已經(jīng)確定了返回值的時(shí)候,后面的表達(dá)式的值就不再計(jì)算了。
TypeOf 返回當(dāng)前對(duì)象的類型,每一個(gè)類都有一個(gè)getType方法與它很相似,據(jù)一個(gè)小例子如下:
Dim a As New dog
Dim b As New dog
Dim c As Type
c = a.GetType
MsgBox(c.ToString)
If TypeOf (a) Is vb1.Form7.dog Then
MsgBox(True)
End If
’vb1.Form7+dog
’True
就說(shuō)這么多吧。已有在應(yīng)用中如果在總結(jié)出什么好的經(jīng)驗(yàn),再慢慢補(bǔ)充。