技巧vb.net中的操作符應(yīng)用實(shí)例

字號(hào):

任何一門語(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ǔ)充。