我正在阅读一段代码,该代码块读取Microsoft访问数据库架构。
在其他人之间,我在循环中看到了这行代码
ColName = SchemaTable.Rows(i)!COLUMN_NAME.ToString
为什么感叹号用于{! }?
答案 0 :(得分:6)
来自MSDN: Special Characters in Code (Visual Basic)
感叹号(!)运算符
使用!运算符仅在类或接口上作为字典访问 运营商。类或接口必须具有默认属性 接受单个String参数。紧随其后的标识符 的! operator成为传递给默认值的参数值 属性为字符串。
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 第一行使用传统的属性索引访问,第二行 利用index是class的默认属性这一事实 hasDefault,第三个使用字典访问该类。
注意第二个操作数!运算符必须是有效的Visual 基本标识符未用双引号(“”)括起来。在 换句话说,您不能使用字符串文字或字符串变量。该 下面更改到MsgBox调用的最后一行生成一个 错误,因为“X”是一个封闭的字符串文字。
"Dictionary access returns " & hD!"X")
对默认集合的引用必须是显式的。特别是你 不能用了!运算符在后期变量上。
答案 1 :(得分:0)
正在对集合SchemaTable
进行查找,查找COLUMN_NAME.ToString
,然后将其设置为ColName
更多信息和示例:
http://support.microsoft.com/kb/129287