因此,假设我有:
Public Interface ISomeInterface
End Interface
Public Class SomeClass
Implements ISomeInterface
End Class
Run Code Online (Sandbox Code Playgroud)
如果我有MyListas List(Of SomeClass),则无法直接设置List(Of ISomeInterface) = MyList。但是,我可以设置一个IEnumerable(Of ISomeInterface) = MyList。
基于对协方差的理解,我认为自List(Of T)实施以来,它应该在列表中起作用IEnumerable(Of T)。显然,我缺少了一些东西。
为什么这样工作?具体说明为什么我不能做这样的事情:
Dim Animals As new List(Of Animal)
Dim Cats As List(Of IAnimal) = Animals
Run Code Online (Sandbox Code Playgroud)
Animal实现IAnimal接口的位置。但我可以:
Dim Animals As New List(Of Animal)
Dim Cats As IEnumerable(Of IAnimal) = Animals
Run Code Online (Sandbox Code Playgroud) 我有一个列表框,显示数组的内容.按下"go"按钮时,数组会填充一个结果列表.
go按钮在表单属性上设置为AcceptButton,因此在表单焦点的任何位置按Enter键会重新运行go按钮进程.
双击列表框中数组的结果可以正常使用如下:
void ListBox1_DoubleClick(object sender, EventArgs e) {}
我希望能够使用我的箭头键并输入键来选择和运行事件,而无需双击列表框中的行.(但是每次按钮都会运行)
基本打开表单,键入搜索字符串,按回车键运行go按钮,使用向上和向下箭头然后按Enter键选择运行相同的事件,如上面的双击.每一位之后都需要改变焦点.