Vb.net 这{!}在特定的代码行中是什么意思?

Vb.net 这{!}在特定的代码行中是什么意思?,vb.net,datatable,Vb.net,Datatable,我正在读一段代码,它读取一个MicrosoftAccess数据库模式 在其他人之间,我看到了循环中的那行代码 ColName = SchemaTable.Rows(i)!COLUMN_NAME.ToString 为什么感叹号用于{!}?它正在查找集合SchemaTable,查找列\u NAME.ToString,然后将其设置为ColName 更多信息和示例如下: 来自 感叹号(!)运算符 用这个!运算符仅在类或接口上作为字典访问 操作人员类或接口必须具有以下默认属性: 接受单个字符串参数。紧

我正在读一段代码,它读取一个MicrosoftAccess数据库模式

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

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

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

它正在查找集合
SchemaTable
,查找
列\u NAME.ToString
,然后将其设置为
ColName
更多信息和示例如下: 来自

感叹号(!)运算符

用这个!运算符仅在类或接口上作为字典访问 操作人员类或接口必须具有以下默认属性: 接受单个字符串参数。紧跟其后的标识符 这个运算符成为传递给默认值的参数值 属性作为字符串

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,第三个使用字典访问类

请注意,的第二个操作数!运算符必须是有效的视觉对象 基本标识符未包含在双引号(“”)中。在里面 换句话说,不能使用字符串文字或字符串变量。这个 对MsgBox调用的最后一行进行更改后,将生成 错误,因为“X”是一个封闭的字符串文字

"Dictionary access returns " & hD!"X") 
对默认集合的引用必须是显式的。特别是你 不能使用该选项!晚绑定变量上的运算符


它没有在“集合
SchemaTable
”上进行查找/索引;它是在SchemaTable.Rows(i)上进行的。它没有将任何内容设置为
ColName
:它将
ColName
设置为
.ToString
的结果。此外,
与此无关。最后,你的链接失效了。即使这些都是固定的,这似乎是一个非常模糊的答案。