1 .net c# arrays generics c#-3.0
我问这个是因为我使用通用表单得到了错误"ArgumentOutOfRange".
List<WaitHandle> arraywaithandles = new List<WaitHandle>(4);
Run Code Online (Sandbox Code Playgroud)
要么...
WaitHandle[] A = new WaitHandle[4]
Run Code Online (Sandbox Code Playgroud)
这有效:
for (int i = 0; i < 4; i++)
{
A[i] = (arrayresultados[i].AsyncWaitHandle);
}
Run Code Online (Sandbox Code Playgroud)
这不起作用:
for (int i = 0; i < 4; i++)
{
arraywaithandles[i] = (arrayresultados[i].AsyncWaitHandle);
}
Run Code Online (Sandbox Code Playgroud)
这个:
new List<WaitHandle>(4);
Run Code Online (Sandbox Code Playgroud)
创建一个初始容量为4 的List对象WaitHandles.这意味着List上面的行之后将保持为零WaitHandles,但至少有足够的内存来接收4 WaitHandles而不必在以后执行额外的内存分配.
这样,如果你知道你需要插入200 WaitHandles但实际上没有它们,你可以让List对象WaitHandles在一次运行中分配足够的内存200 而不必在添加时重新分配WaitHandles.
这就是为什么你的第一个for循环引发ArgumentOutOfRange异常,因为你试图访问不存在WaitHandles的arraywaithandles.如果您需要添加WaitHandles的List,那么你可以使用适当命名的List<T>::Add()方法.
另一方面,这个:
new WaitHandle[4];
Run Code Online (Sandbox Code Playgroud)
创建一个4的数组,WaitHandles在上面的行结束时将存在.
| 归档时间: |
|
| 查看次数: |
115 次 |
| 最近记录: |