这是什么{!在特定的代码行中意味着什么?

时间:2011-07-27 08:11:13

标签: vb.net datatable

我正在阅读一段代码,该代码块读取Microsoft访问数据库架构。

在其他人之间,我在循环中看到了这行代码

ColName = SchemaTable.Rows(i)!COLUMN_NAME.ToString 

为什么感叹号用于{! }?

2 个答案:

答案 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