2011-07-27 24 views

回答

4

MSDN: Special Characters in Code (Visual Basic)

感嘆號操作

使用!運算符僅在類或接口上作爲字典訪問 運算符。類或接口必須具有默認屬性, 接受單個字符串參數。該標識符緊接在 之後!運算符成爲以字符串形式傳遞給默認 屬性的參數值。

Public Class hasDefault 
    Default Public ReadOnly Property index(ByVal s As String) As Integer 
    Get 
     Return 32768 + AscW(s) 
    End Get 
    End Property 
End Class 
Public Class testHasDefault 
    Public Sub compareAccess() 
    Dim hD As hasDefault = New hasDefault() 
    MsgBox("Traditional access returns " & hD.index("X") & vbCrLf & 
     "Default property access returns " & hD("X") & vbCrLf & 
     "Dictionary access returns " & hD!X) 
    End Sub 
End Class 

MSGBOX所有的三個輸出線顯示值32856.該 第一行使用到屬性索引的傳統的接入,所述第二 利用以下事實,即指數是類 hasDefault的默認屬性,第三個使用字典訪問該類。

請注意,第二操作數的!運算符必須是不包含在雙引號(「」)中的有效Visual 基本標識符。在 換句話說,你不能使用字符串文字或字符串變量。 以下更改爲MsgBox調用的最後一行會生成一個 錯誤,因爲「X」是一個封閉的字符串文字。

"Dictionary access returns " & hD!"X") 

對默認集合的引用必須是顯式的。特別是你 不能使用!運算符在一個遲到的變量上。

0

它做一個查找在收集SchemaTable,尋找COLUMN_NAME.ToString,那麼設置爲ColName 這裏更多的信息和示例:(!) http://support.microsoft.com/kb/129287

+0

它沒有在「集合SchemaTable」上執行查找/索引。它在'SchemaTable.Rows(i)'上進行。它不會爲ColName設置任何內容:它將'ColName'設置爲'.ToString'的結果。此外,'!'與此無關。最後,你的鏈接已經死了。即使這些是固定的,這似乎是一個非常模糊的答案。 –