我正在阅读一个代码块,该代码块读取一个Microsoft Access数据库架构。
在其他人之间,我看到了循环的那一行代码
ColName = SchemaTable.Rows(i)!COLUMN_NAME.ToString
Run Code Online (Sandbox Code Playgroud)
为什么将感叹号用于{!}?
感叹号(!)运算符
使用 !运算符只能在类或接口上作为字典访问运算符。该类或接口必须具有接受单个String参数的默认属性。紧跟在!之后的标识符 运算符成为作为字符串传递给默认属性的参数值。
Run Code Online (Sandbox Code Playgroud)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 ClassMsgBox的三行输出均显示值32856。第一行使用对属性索引的传统访问,第二行利用index是hasDefault类的默认属性的事实,第三行使用对类的字典访问。
请注意!的第二个操作数。运算符必须是有效的Visual Basic标识符,不能用双引号(“”)引起来。换句话说,您不能使用字符串文字或字符串变量。对MsgBox调用的最后一行的以下更改会产生错误,因为“ X”是一个封闭的字符串文字。
Run Code Online (Sandbox Code Playgroud)"Dictionary access returns " & hD!"X")对默认集合的引用必须是明确的。特别是,您不能使用!后期变量上的运算符。